2013-02-28 103 views
3

我正尝试使用以下代码在运行时更新appconfig文件。我没有收到错误,但没有更新我的配置文件。在运行时更改appconfig

System.Configuration.Configuration config = 
    ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None); 
string oldValue = config.AppSettings.Settings["Username"].Value; 
config.AppSettings.Settings["Username"].Value = "NewValue"; 
config.Save(ConfigurationSaveMode.Modified); 
ConfigurationManager.RefreshSection("appSettings"); 

回答

0

当我需要更新我的配置,我总是要使用:

config.AppSettings.SectionInformation.ForceSave = true; 
//Save config 
//Refresh Config section 

否则,它不适合我更新配置文件。

另外,你在Visual Studio中运行这个吗?如果您正在从Visual Studio进行调试,它会在您的实际项目中创建副本int bin文件夹,除非您查看bin \ debug文件夹中的配置文件,否则不会看到对配置的任何更改。

1

只要您有对app.config文件的写入权限,以下内容就可以工作。

// To Save 
System.Configuration.Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None); 
config.AppSettings.Settings["Username"].Value = "NewValue"; 
config.AppSettings.SectionInformation.ForceSave = true; 
config.Save(ConfigurationSaveMode.Modified); 

// To Refresh 
ConfigurationManager.RefreshSection("appSettings"); 
System.Configuration.Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None); 
3

添加config.AppSettings.SectionInformation.ForceSave = true;将有所斩获。在Justin说的调试时,你应该看看YourProject.vshost.exe.config。修改保存在那里。

1

您无法更新配置。你必须删除它,然后再添加它。这适用于我,包括通过Visual Studio进行调试时:

config.AppSettings.Settings.Remove("Username"); 
config.AppSettings.Settings.Add("Username", "NewValue"); 
config.Save(ConfigurationSaveMode.Modified);