在我的app.config中,我有这个部分
<appSettings>
<add key ="UserId" value ="myUserId"/>
// several other <add key>s
</appSettings>
通常我使用userId = ConfigurationManager.AppSettings["UserId"]
如果我使用ConfigurationManager.AppSettings["UserId"]=something
修改它,则该值不会保存到文件中,下次加载应用程序时,它会使用旧值。
如何在运行时更改某些app.config键的值?
答案 0 :(得分:56)
System.Configuration.Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
config.AppSettings.Settings["UserId"].Value = "myUserId";
config.Save(ConfigurationSaveMode.Modified);
您可以阅读有关ConfigurationManager here
的信息答案 1 :(得分:2)
旁注。
如果app.config中的某些内容需要在运行时更改...可能会有更好的地方来保存该变量。
App.config用于常量。在最坏的情况下,有一次初始化的事情。
答案 2 :(得分:2)
更改值后,可能您将不保存Appconfig文档。
// update
settings[-keyname-].Value = "newkeyvalue";
//save the file
config.Save(ConfigurationSaveMode.Modified);
//relaod the section you modified
ConfigurationManager.RefreshSection(config.AppSettings.SectionInformation.Name);
答案 3 :(得分:0)
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);
}
}