2017-08-07 1 views
0

je peux facilement mettre à jour les paramètres de l'application dynamique commeC# mise à jour la section de configuration personnalisée programme

System.Configuration.Configuration configDefault = null; 
ExeConfigurationFileMap fileMap = new ExeConfigurationFileMap(); 
         fileMap.ExeConfigFilename = configFileName; 
         configDefault = ConfigurationManager.OpenMappedExeConfiguration(fileMap, ConfigurationUserLevel.None); 

configDefault.AppSettings.Settings[key].Value = "some value"; 

Comment puis-je remplacer les valeurs de la section de configuration existantes dans la mémoire, je ne veux pas mettre à jour le app.config lui-même? Le fichier app.config actuel ressemble à:

<SomeCustomSection> 
    <group name="mygroup" isenabled ="true"> 
     <subscriber name="customer" log="true" isenabled="false"/> 
     <subscriber name="order" log="true" isenabled="false"/> 
    </group> 
    </SomeCustomSection> 

Je remplace les valeurs de configuration d'un autre fichier de configuration. Comment dois-je mettre à jour l'objet de configuration configDefault avec la section mise à jour? Quelque chose comme:

configDefault.Sections["SomeCustomSection"] = sectionDefault; 

Répondre

0

Je ne connais pas un moyen de le faire en mémoire. Même le code de mise à jour AppSettings que vous incluez ne met pas à jour la configuration en mémoire si le ConfigurationManager.AppSettings est coché après avoir modifié un paramètre dans une configuration mappée chargée, il reflète toujours ce qu'il y a dans le fichier <app> .exe.config. Au moins c'est comme ça que ça se passe quand j'essaye le code que tu as parce que la config que tu changes n'est pas la config chargée par ConfigurationManager.

Si vous modifiez uniquement la configuration chargée par ConfigurationManager.OpenMappedExeConfiguration est ce dont vous avez besoin alors le code que vous affichez est déjà en train de modifier les sections de configuration. Il n'y a rien à définir.

Si vous avez besoin de la configuration modifiée pour être disponibles ailleurs sans passer la configuration modifiée autour, vous devrez sauver, rafraîchir et restaurer plus tard le <app> exe.config fichier à son état précédent:

configDefault.Save(); 
ConfigurationManager.RefreshSection(SomeCustomSection);