通过编程读写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 来进行访问。如
下面的代码所示:
//获取connectionStrings节点
ConfigurationManager.ConnectionStrings["ConnectString"]
//获取appSettings节点
ConfigurationManager.AppSettings["CustomerName"];
2. 使用WebConfigurationManager访问配置信息
前面已经说过,在对于Web应用程序配置操作方面,ConfigConfigurationManager类提供强大的支
持,它允许你在运行时从配置文件抓取信息。在日常操作中,主要使用它的如下成员,如表1-2所示。
表1-2 ConfigConfigurationManager类的主要成员
成员描述
AppSettings 提供对添加到应用程序配置文件的<appSettings>节的所有自定义信息
的访问
ConnectionStrings 提供对添加到应用程序配置文件的<connectionStrings>节的数据的访问
OpenWebConfiguration() 返回一个Configuration对象,它提供对特定Web应用程序的配置信息的
访问
OpenMachineConfiguration() 返回一个Configuration对象,它提供对特定Web服务器定义的配置信息
的访问(在Machine.config文件中)
(1)获取<appSettings>节点和<connectionStrings>的信息
//获取appSettings节点
WebConfigurationManager.AppSettings["CustomerName"];
//获取connectionStrings节点
WebConfigurationManager.ConnectionStrings["ConnectString"];
上面只是简单地获取<appSettings>配置节点的值,除此之外,还可以像下面这样获取:
//打开配置文件
Configuration config = WebConfigurationManager.OpenWebConfiguration("~");
//获取appSettings节点
AppSettingsSection appSettings = (AppSettingsSection)config.GetSection("appSettings");
//获取key为CustomerName的value值
string customerName = appSettings.Settings["CustomerName"].Value;
//获取所有key的value值
string[] appKeys = appSettings.Settings.AllKeys;
for (int i = 0; i < appSettings.Settings.Count; i++)
{
Response.Write(appSettings.Settings[appKeys[i]].Value);
}
56 ASP.NET 4权威指南
(2)在<appSettings>节点中添加新元素
//打开配置文件
Configuration config = WebConfigurationManager.OpenWebConfiguration("~");
//获取appSettings节点
AppSettingsSection appSection = (AppSettingsSection)config.GetSection("appSettings");
//在appSettings节点中添加元素
appSection.Settings.Add("newkey1", "newkey1's value");
appSection.Settings.Add("newkey2", "newkey2's value");
//保存
config.Save();
运行代码之后就可以看见配置文件的<appSettings>节点中添加了两个新元素,如下所示:
<appSettings>
<add key="newkey1" value="newkey1's value" />
<add key="newkey2" value="newkey2's value" />
</appSettings>
(3)修改和删除<appSettings>节点或属性
//打开配置文件
Configuration config = WebConfigurationManager.OpenWebConfiguration("~");
//获取appSettings节点
AppSettingsSection appSection = (AppSettingsSection)config.GetSection("appSettings");
//删除appSettings节点中的元素
appSection.Settings.Remove("newkey1");
//修改appSettings节点中的元素
appSection.Settings["newkey2"].Value = "修改newkey2的值";
config.Save();
运行结果如下所示:
<appSettings>
<add key="newkey2" value="修改newkey2的值" />
</appSettings>
3. 用XmlDocument修改Web.config配置节点的值
除了上面的方法之外,还可以使用XmlDocument类来修改Web.config的节点值。程序方法如代
码清单1-10所示。
代码清单1-10 用程序修改<appSettings>配置节里Key的值
/// <summary>
/// 修改web.config文件appSettings配置节中的add里的value属性
/// </summary>
/// <param name="key">add里的key</param>
/// <param name="strValue">要修改的值</param>
public void UpdateWebConfig(string key, string strValue)
{
//要修改的配置文件路径
string keyPath = "/configuration/appSettings/add[@key='?']";
XmlDocument webConfig = new XmlDocument();
//web.config文件的存储路径
string webConfigPath = HttpContext.Current.Server.MapPath("~") + @"\web.config";
//将web.config文件加载到XmlDocument中
webConfig.Load(webConfigPath);
第1章开发你的第一个ASP.NET应用—“Hello,World” 57
//查找要修改的配置节
XmlNode updateKey = webConfig.SelectSingleNode((keyPath.Replace("?", key)));
if (updateKey == null)
{
throw new ArgumentException("没有找到<add key='" + key + "' value=/>的配置节");
}
//修改配置节的值
updateKey.Attributes["value"].InnerText = strValue;
//修改后保存
webConfig.Save(webConfigPath);
}
好,现在假设要通过上面的方法将“<add key="Title" value="系统名称"/>”的“value”修改成
“EipsoftCRM管理系统”,我们只要传入相关的参数就可以了。代码如下:
UpdateWebConfig("Title"," EipsoftCRM管理系统")
利用上面的方法,读者可以举一反三,使用相同的处理方式修改其他配置节。
注意虽然可以通过多种手段去修改配置文件里的配置节,但这样做是非常不理想的。修改配置所
花的代价很大:文件的访问速度会很慢,而且它所需要的同步化增加了许多额外的开销,新程序域
创建(在每次配置设置修改时发生)会花很大代价。所以,除非特殊情况,建议不要轻易去修改配
置文件。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值