2012-08-16 86 views
0

我需要更新我的app.config中的一個自定義配置部分中的值。如何做到這一點有一個很好的例子嗎?C# - 保存自定義配置

<mySection> 
    <level1> 
     <add data1="444"/> 
    </level1> 
</mySection> 

我想以編程方式在444到555更新。

回答

6

假設您的配置存儲在application.exe.config中,以下內容應該可以工作。

void ModifyLevel1Value(int newValue) 
{ 
    Configuration exeConfiguration = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None); 
    MySection section = (MySection)exeConfiguration.GetSection("mySection"); 

    // Modify value, or whatever is sensible in your program 
    section.LevelsCollection["data1"] = newValue; 

    exeConfiguration.Save(); 
} 

我不知道這是否會爲web.config中工作,我有網絡應用程序和它們的配置沒有什麼經驗。

該技術將重寫配置文件,但不會刷新任何內部配置文件緩存。要強制重新加載配置文件(這可能不是應用程序中的問題),可以調用以下靜態方法。

ConfigurationManager.RefreshSection(section); 
+0

這會導致appdomain重新加載嗎?這會在應用程序運行時引發任何問題嗎?這是一個控制檯應用程序,所以我認爲它與web應用程序相比不會有什麼大不了的。 – Arcadian 2012-08-16 19:13:49

+0

這不會導致應用程序域被重新加載。只有配置文件。我無法評論這可能會導致您的應用程序出現什麼問題,因爲我不知道您的應用程序是如何編寫的。 – 2012-08-16 19:15:31

1

你可以使用linq to xml找到你想要更改的元素,你應該得到一個XElement對象,改變它如你所願,和保存。