0

Je suis en train de créer un fichier web.config, dans l'Assistant .MSI Advanced Installer, avec les données d'entrée de la chaîne de connexion des utilisateurs.Enregistrement dans web.config, ajout d'une extension "config" supplémentaire

Pourquoi cela résulte-t-il en un fichier web.config.config avec config supplémentaire et comment l'éviter?

Je suppose que mon Open ou Save n'est pas correct?

Il s'agit d'une action personnalisée, à l'intérieur d'un fichier .MSI, que j'ai exécutée à partir d'Advanced Installer, mais cela ne devrait pas avoir d'impact.

[CustomAction] 
public static ActionResult EncryptConnStr(Session session) 
{ 
    try 
    { 
     var path = Path.Combine(@"C:\Users\radbyx\Documents", "web.config"); 
     var connStr = BuildConnStr("foo", "foo", "foo", "foo"); 

     Configuration config = ConfigurationManager.OpenExeConfiguration(path); 
     ConnectionStringsSection section = (ConnectionStringsSection)config.GetSection("connectionStrings"); 
     section.ConnectionStrings.Add(new ConnectionStringSettings(GetConnectionStringName(), connStr)); 

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

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

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

Répondre

2

Ce comportement est dû à ConfigurationManager.OpenExeConfiguration vous attend à fournir le chemin d'un exécutable, pas un fichier de configuration.

Pour ouvrir un fichier de configuration explicitement, utilisez la surcharge qui prend une carte:

var map = new ExeConfigurationFileMap { ExeConfigFilename = configFilePath }; 
configuration = ConfigurationManager.OpenMappedExeConfiguration(map, ConfigurationUserLevel.None); 
+0

Wow ça marche, vous êtes l'homme. Aurait dû demander il y a longtemps. Encore une fois est SO le meilleur site là-bas :) – radbyx

+1

De rien. Heureux d'aider :) –