2012-08-16 36 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对象,改变它如你所愿,和保存。