c#读写App.config,ConfigurationManager.AppSettings 不生效的解决方法

2019-12-26 13:37:07王振洲
  • </appSettings>  </configuration>  ?

    在预定义的 appSettings 节(注意大小写),有很多的元素,这些元素名称都是“add”,有两个属性分别是“key”和“value”。
    .NET 提供了对appSettings节的访问方法。在 .NET 1.0 和 1.1 版本中,可以使用 System.Configuration.ConfigurationSettings.AppSettings["Key"] 来对 key = "Key" 的<add>元素的 value属性 进行访问。
    注意:现在.Net FrameWork 2.0中已经明确表示此ConfigurationSettings属性已经废弃,建议改为 ConfigurationManager 或 WebConfigurationManager。


    使用 System.Configuration.ConfigurationManager,需要在工程里添加对 system.configuration.dll 程序集的引用。(在解决方案管理器中右键点击工程名称,在右键菜单中选择添加引用,在.NET选项卡下即可找到。)
    添加引用后,就可以用 ConfigurationManager.AppSettings["Key"] 来读取对应的值了.
    但是,ConfigurationManager.AppSettings 属性是只读的,并不支持修改属性值。这是因为据说微软不太建议我们动态写入app.config文件,而是建议手工配置后,在程序运行时只做静态访问。
    如果实在需要在程序中进行修改,也即写入App.Config,请往下看。

    二、appSettings配置节的读写操作

    读取App.config文件的appSettings节的方法比较简单,可以通过上文中 System.Configuration.ConfigurationManager.AppSettings["Key"]的方法进行访问,但前面也已经说了,该方法不提供写入。

    如果希望写入配置文件,可以使用ConfigurationManager对象执行打开配置文件的操作后,将会返回一个Configuration的对象,利用该对象进行操作(增删改查都可以哦)。

    下面给出实现的代码(增加引用using System.Configuration名称空间)
     

    1. private void AccessAppSettings()  { 
    2. //获取Configuration对象  Configuration config = System.Configuration.ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None); 
    3. //根据Key读取<add>元素的Value  string name = config.AppSettings.Settings["name"].Value; 
    4. //写入<add>元素的Value  config.AppSettings.Settings["name"].Value = "xieyc"; 
    5. //增加<add>元素  config.AppSettings.Settings.Add("url", "http://www.easck.com//删除<add>元素  config.AppSettings.Settings.Remove("name");