关于实时修改App.config并且获取问题的一个解决方案

在程序运行时候,我们有时候需要修改配置文件。通过查阅网上资料,通常的做法有两种,一种就是将app.config视为一个xml文本去处理,这方面我就不去说了,另一个方法就是通过自带的类库去修改,这个网上也有资料,我就不多说。

我这里要说的是,在使用Configuration 类去修改时候,获取文件的方式不同,会产生不同的结果,这么说可能不太容易理解,我通过举一个例子,方便大家理解:

一:通过编译时修改

 Configuration config = ConfigurationManager.OpenExeConfiguration(Assembly.GetEntryAssembly ().Location);

这个实例化是通过获取文件的路径来修改配置文件,所以在修改以后,是无法获取到文件修改信息的。只有在下次启动程序的时候,才能够获取到修改后的信息。

二:通过运行时修改

 Configuration config1 = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);

这个实例化能够修改配置文件,并且实时的获取到修改后的信息。不过在下次启动程序的时候,却还是按照原来的配置文件的信息去运行。

 

所以这两个方法各有利弊,如果需要修改,并且实时的去获取,以及下次运行仍旧保存修改后的信息的,那就将这两个方法同时去使用,能够的到效果。

代码如下:

Configuration config = ConfigurationManager.OpenExeConfiguration(Assembly.GetEntryAssembly ().Location);            

config.AppSettings.Settings.Remove(key);            

config.AppSettings.Settings.Add(key, value);            

config.Save();

Configuration config1 = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);            

config1.AppSettings.Settings[key].Value = value;            

config1.Save();            

          

ConfigurationManager.RefreshSection("appSettings");

 

以上是我解决这个问题的方法, 希望有更好的方法的话,在评论里告诉我,同时也让困扰于此问题的同仁,有一个解决方案。不喜勿喷!

posted @ 2013-12-12 12:59  天空很广阔_Leo  阅读(523)  评论(0编辑  收藏  举报