2013-02-28 207 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);