3

Avec le programme d'installation avancé, j'essaie d'effectuer une action personnalisée qui, lors de l'installation, crypte la chaîne de connexion. J'ai l'impression que je ne peux pas utiliser "~" ici. (J'ai déplacé mon code de travail du projet MVC, ici).Comment chiffrer votre chaîne de connexion dans Advanced Installer (13.3) Action personnalisée

Existe-t-il une alternative simple à cette ligne ou suis-je obligé de faire une réécriture complète et d'utiliser par ex. une solution qui utilise somekind Stream (comme celui-ci Modifying Web.Config During Installation

Exception lancée par action personnalisée: System.Reflection.TargetInvocationException: Exception a été levée par la cible d'un appel ---> System.ArgumentException:. l'application par rapport chemin virtuel '~' est pas autorisée ici

action personnalisée.

[CustomAction] 
public static ActionResult EncryptConnStr(Session session) 
{ 
    try 
    { 
     var config = WebConfigurationManager.OpenWebConfiguration("~"); 
     var section = (ConnectionStringsSection)config.GetSection("connectionStrings"); 
     var cms = section.ConnectionStrings[GetConnectionStringName()]; 
     var connStr = BuildConnStr(session["CONN_STR_SERVER"], session["CONN_STR_DATABASE"], session["CONN_STR_USERNAME"], session["CONN_STR_PASSWORD"]); 

     if (cms == null) 
     { 
      // Add new Connection String 
      section.ConnectionStrings.Add(new ConnectionStringSettings(GetConnectionStringName(), connStr)); 
     } 
     else 
     { 
      // Update existing Connection String 
      cms.ConnectionString = connStr; 
     } 

     // Encrypt 
     section.SectionInformation.ProtectSection(ConnStrEncryptionKey); 

     // Save the configuration file. 
     config.Save(ConfigurationSaveMode.Modified); 

     return ActionResult.Success; 
    } 
    catch (Exception ex) 
    { 
     MessageBox.Show(ex.StackTrace, ex.Message); 
     throw; 
    } 
} 
+0

Jetez un oeil à https://solutiondesign.com/blog/-/blogs/a-simple-trick-to-centralize-your-net-configurati-1/ – Ravikumar

Répondre

0

la solution à la question du chemin, est d'utiliser ConfigurationManager un long avec une cartographie, comme ceci, au lieu de la version Web WebConfigurationManager.

var map = new ExeConfigurationFileMap { ExeConfigFilename = path }; 
Configuration config = ConfigurationManager.OpenMappedExeConfiguration(map, ConfigurationUserLevel.None); 

Le cryptage fonctionne très bien que le code est, mais le problème avec sauvegarde est toujours pas résolu parce que le temps d'exécution est au début. L'installation n'est pas terminée et web.config n'est pas encore copié sur le APPDIR.