web-dev-qa-db-fra.com

Comment modifier mes clés App.exe.config lors de l'exécution?

Dans mon app.config j'ai cette section

<appSettings>
    <add key ="UserId" value ="myUserId"/>
     // several other <add key>s
</appSettings>

Habituellement, j'accède aux valeurs à l'aide de userId = ConfigurationManager.AppSettings["UserId"]

Si je le modifie en utilisant ConfigurationManager.AppSettings["UserId"]=something, la valeur n'est pas enregistrée dans le fichier et la prochaine fois que je charge l'application, elle utilise l'ancienne valeur.

Comment puis-je changer la valeur de certaines clés app.config pendant l'exécution?

25
Louis Rhys
System.Configuration.Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);

config.AppSettings.Settings["UserId"].Value = "myUserId";     
config.Save(ConfigurationSaveMode.Modified);

Vous pouvez lire sur ConfigurationManager ici

57
Rafal Spacjer

Sur une note latérale.

Si quelque chose dans votre app.config doit changer au moment de l'exécution ... il est possible qu'il y ait un meilleur endroit pour conserver cette variable.

App.config est utilisé pour les constantes. Au pire, quelque chose avec une initialisation unique.

2
Mulki

Après avoir modifié la valeur, u n'enregistrera probablement pas le document Appconfig.

// update    
  settings[-keyname-].Value = "newkeyvalue"; 
//save the file 
  config.Save(ConfigurationSaveMode.Modified);   
//relaod the section you modified 
  ConfigurationManager.RefreshSection(config.AppSettings.SectionInformation.Name); 
2
PawanS

Modification du fichier app.config

using Microsoft.VisualBasic;
using System;
using System.Collections;
using System.Collections.Generic;
using System.Data;
using System.Diagnostics;
using System.Configuration;
using System.Xml;

public class AppConfigFileSettings
{


    public static void UpdateAppSettings(string KeyName, string KeyValue)
    {
        XmlDocument XmlDoc = new XmlDocument();

        XmlDoc.Load(AppDomain.CurrentDomain.SetupInformation.ConfigurationFile);

        foreach (XmlElement xElement in XmlDoc.DocumentElement) {
            if (xElement.Name == "appSettings") {

                foreach (XmlNode xNode in xElement.ChildNodes) {
                    if (xNode.Attributes[0].Value == KeyName) {
                        xNode.Attributes[1].Value = KeyValue;
                    }
                }
            }
        }
        XmlDoc.Save(AppDomain.CurrentDomain.SetupInformation.ConfigurationFile);
    }
}
0
Pranay Rana