通过编程读写Web.config配置节

 

1.4.8   通过编程读写Web.config配置节

早在.NET 2.0的时候,微软就提供了ConfigurationManager和WebConfigurationManager这两个类来管理配置文件。其中,ConfigurationManager类在System.Configuration命名空间中,而WebConfigurationManager类在System.Web.Configuration命名空间中。在它们的使用上,对于Web应用程序配置,建议使用 System.Web.Configuration. WebConfigurationManager类,而不建议使用 System.Configuration.ConfigurationManager类。此外,使用时还应该注意其他类都无法继承这两个类。

1. 使用ConfigurationManager访问配置信息

若要使用ConfigurationManager类来访问配置信息,可以调用 GetSection 方法。但对于某些节,例如 appSettings 和 connectionStrings,可以使用 AppSettings 和 ConnectionStrings 来进行访问。如下面的代码所示:

 
 
  1. //获取connectionStrings节点  
  2. ConfigurationManager.ConnectionStrings["ConnectString"]  
  3. //获取appSettings节点  
  4. ConfigurationManager.AppSettings["CustomerName"]; 

2. 使用WebConfigurationManager访问配置信息

前面已经说过,在对于Web应用程序配置操作方面,ConfigConfigurationManager类提供强大的支持,它允许你在运行时从配置文件抓取信息。在日常操作中,主要使用它的如下成员,如表1-2所示。

表1-2   ConfigConfigurationManager类的主要成员

 
(1)获取<appSettings>节点和<connectionStrings>的信息
 
 
  1. //获取appSettings节点  
  2. WebConfigurationManager.AppSettings["CustomerName"];  
  3. //获取connectionStrings节点  
  4. WebConfigurationManager.ConnectionStrings["ConnectString"];  
  5. 上面只是简单地获取<appSettings>配置节点的值,除此之外,还可以像下面这样获取:  
  6. //打开配置文件  
  7. Configuration config = WebConfigurationManager.OpenWebConfiguration("~");  
  8. //获取appSettings节点  
  9. AppSettingsSection appSettings = (AppSettingsSection) config.GetSection("appSettings");  
  10. //获取key为CustomerName的value值  
  11.  string customerName = appSettings.Settings["CustomerName"].Value;  
  12. //获取所有key的value值  
  13. string[] appKeys = appSettings.Settings.AllKeys;  
  14. for (int i = 0; i < appSettings.Settings.Count; i++)  
  15. {  
  16.     Response.Write(appSettings.Settings[appKeys[i]].Value);  
  17.  } 
(2)在<appSettings>节点中添加新元素
 
 
  1. //打开配置文件  
  2. Configuration config = WebConfigurationManager.OpenWebConfiguration("~");  
  3. //获取appSettings节点  
  4. AppSettingsSection appSection = (AppSettingsSection) config.GetSection("appSettings");  
  5. //在appSettings节点中添加元素  
  6. appSection.Settings.Add("newkey1", "newkey1's value");  
  7. appSection.Settings.Add("newkey2", "newkey2's value");  
  8. //保存  
  9. config.Save(); 

运行代码之后就可以看见配置文件的<appSettings>节点中添加了两个新元素,如下所示:

 
 
  1. <appSettings> 
  2.   <add key="newkey1" value="newkey1's value" /> 
  3.   <add key="newkey2" value="newkey2's value" /> 
  4. </appSettings> 

(3)修改和删除<appSettings>节点或属性

 
 
  1. //打开配置文件  
  2. Configuration config = WebConfigurationManager. OpenWebConfiguration("~");  
  3. //获取appSettings节点  
  4. AppSettingsSection appSection = (AppSettingsSection) config.GetSection("appSettings");  
  5. //删除appSettings节点中的元素  
  6. appSection.Settings.Remove("newkey1");  
  7. //修改appSettings节点中的元素  
  8. appSection.Settings["newkey2"].Value = "修改newkey2的值";  
  9. config.Save();  
  10. 运行结果如下所示:  
  11. <appSettings> 
  12.     <add key="newkey2" value="修改newkey2的值" /> 
  13. </appSettings> 

3. 用XmlDocument修改Web.config配置节点的值

除了上面的方法之外,还可以使用XmlDocument类来修改Web.config的节点值。程序方法如代码清单1-10所示。

代码清单1-10   用程序修改<appSettings>配置节里Key的值

 
 
  1. /// <summary> 
  2. /// 修改web.config文件appSettings配置节中的add里的value属性  
  3. /// </summary> 
  4. /// <param name="key">add里的key</param> 
  5. /// <param name="strValue">要修改的值</param> 
  6. public void UpdateWebConfig(string key, string strValue)  
  7.  {  
  8.     //要修改的配置文件路径  
  9.      string keyPath = "/configuration/appSettings/add[@key='?']";  
  10.      XmlDocument webConfig = new XmlDocument();  
  11.     //web.config文件的存储路径  
  12.     string webConfigPath = HttpContext.Current. Server.MapPath("~") + @"\web.config";  
  13.      //将web.config文件加载到XmlDocument中  
  14.      webConfig.Load(webConfigPath);  
  15.      //查找要修改的配置节  
  16.      XmlNode updateKey = webConfig.SelectSingleNode ((keyPath.Replace("?", key)));  
  17.      if (updateKey == null)  
  18.      {  
  19.       throw new ArgumentException("没有找到<add key='"  + key + "' value=/>的配置节");  
  20.      }  
  21.      //修改配置节的值  
  22.      updateKey.Attributes["value"].InnerText = strValue;  
  23.      //修改后保存  
  24.      webConfig.Save(webConfigPath);  
  25.  } 

好,现在假设要通过上面的方法将“<add key="Title" value="系统名称"/>”的“value”修改成“EipsoftCRM管理系统”,我们只要传入相关的参数就可以了。代码如下:

 
 
  1. UpdateWebConfig("Title"," EipsoftCRM管理系统") 

利用上面的方法,读者可以举一反三,使用相同的处理方式修改其他配置节。

注意   虽然可以通过多种手段去修改配置文件里的配置节,但这样做是非常不理想的。修改配置所花的代价很大:文件的访问速度会很慢,而且它所需要的同步化增加了许多额外的开销,新程序域创建(在每次配置设置修改时发生)会花很大代价。所以,除非特殊情况,建议不要轻易去修改配置文件。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 在 C# 中,可以使用 `ConfigurationManager` 类来读写 `App.config` 文件。 首先需要在项目中添加 `System.Configuration` 引用。然后可以使用以下代码来访问 `App.config` 文件中的配置项: ```csharp using System.Configuration; // 读取 App.config 中的配置string value = ConfigurationManager.AppSettings["key"]; // 写入 App.config 中的配置Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None); config.AppSettings.Settings["key"].Value = "value"; config.Save(ConfigurationSaveMode.Modified); ConfigurationManager.RefreshSection("appSettings"); ``` 其中,`AppSettings` 是 `App.config` 文件中的一个点,保存了键值对形式的配置项。可以通过 `ConfigurationManager.AppSettings` 属性来获取该点下的所有配置项,也可以使用 `Configuration.AppSettings.Settings` 属性来获取指定的配置项。 对于写入配置项,需要先使用 `ConfigurationManager.OpenExeConfiguration` 方法打开 `App.config` 文件,并且指定配置文件的用户级别。然后通过 `Configuration.AppSettings.Settings` 属性来设置指定的配置项的值,最后调用 `Configuration.Save` 方法来保存修改,并调用 `ConfigurationManager.RefreshSection` 方法来刷新配置项。 ### 回答2: C 的英文单词是 "cat",意思是猫。猫是一种可爱的动物,常见于全球各地的家庭和农场。猫是人类历史上最早被驯养的动物之一。它们有着柔软的毛发、敏锐的感觉和独特的行为习惯。猫咪通常喜欢独处,但也能与人建立深厚的关系。 猫的行为习惯独特而有趣。它们喜欢用力蹭头,以标记自己的领地。猫会通过抓挠家具或其他表面来磨尖自己的爪子。猫还会用尾巴来表达情绪,例如当它们高兴时会竖起尾巴。猫咪对捕捉小动物和玩具也很有兴趣,这是它们独特的猎食本能。 猫的品种繁多,每个品种都有不同的外貌和特点。比如波斯猫有长而柔软的毛发,而暹罗猫则有蓝色的眼睛和卷曲的尾巴。无论是哪种品种,猫的身体都非常灵活,具有非凡的跳跃能力和敏锐的听力。 猫有很多好处,它们是家庭中的好伙伴。与猫咪玩耍可以减轻压力和焦虑,同时增加幸福感。猫也可以成为一个好的捕鼠员,它们可以帮助控制室内的老鼠和其他害虫。猫还可以带来快乐和乐趣,通过观察它们的行为和与它们互动的方式。 总之,猫是被驯养和喜爱的动物,它们在人类文化中扮演着重要的角色。无论是作为宠物还是环境中的猎手,猫都是我们生活中不可或缺的一部分。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值