这几天在做一个urlMapping类库的时候用到了如何读取web.config中自定义节点, 做完后觉得挺好 现就制作过程叙述一下。
web.config文件在web application中起着非常重要的作用。 它本身包含了授权,handler,compilation,globalization,错误与跟踪等一系列设置。但是当你需要一些特殊的或者想添加自己的settings时,应该如何做呢?
要创建自定义设置 要求有2步:写cs代码 和 修改web.config
代码
这里我们创建了一个简单的handler , 此handler 用在web.config文件中。
using
System;
using System.Collections;
using System.Xml;
using System.Configuration;
using System.Web.Configuration;
namespace Devhood
... {
internal class PageStyleHandler:IConfigurationSectionHandler
...{
public virtual object Create(Object parent, Object context, XmlNode node)
...{
PageStyle config = new PageStyle((PageStyle)parent);
config.LoadValuesFromConfigurationXml(node);
return config;
}
}
public class PageStyle
...{
string _backColour; internal PageStyle(PageStyle parent)
...{
if (parent != null)
_backColour = parent._backColour;
}
internal void LoadValuesFromConfigurationXml(XmlNode node)
...{
XmlAttributeCollection attribCol = node.Attributes;
_backColour = attribCol["backColour"].Value;
}
public string BackColour
...{
get
...{
return _backColour;
}
}
}
}
using System.Collections;
using System.Xml;
using System.Configuration;
using System.Web.Configuration;
namespace Devhood
... {
internal class PageStyleHandler:IConfigurationSectionHandler
...{
public virtual object Create(Object parent, Object context, XmlNode node)
...{
PageStyle config = new PageStyle((PageStyle)parent);
config.LoadValuesFromConfigurationXml(node);
return config;
}
}
public class PageStyle
...{
string _backColour; internal PageStyle(PageStyle parent)
...{
if (parent != null)
_backColour = parent._backColour;
}
internal void LoadValuesFromConfigurationXml(XmlNode node)
...{
XmlAttributeCollection attribCol = node.Attributes;
_backColour = attribCol["backColour"].Value;
}
public string BackColour
...{
get
...{
return _backColour;
}
}
}
}
这里有两个类:继承IConfigurationSectionHandler接口的PageStyleHandler类 和 用于从webconfig返回数据的PageStyle类。PageStyle 类可以读取一个XML 节点(自web.config)并且把节点数据保存的BackColour属性中。
设置Web.config文件
为了能够访问PageStyleHandler必须对web.config做相应的配置。
<
configuration
>
< configSections >
< sectionGroup name ="devhood" >
< section name ="pageStyle" type ="Devhood.PageStyleHandler, PageStyle" />
</ sectionGroup >
</ configSections >
< devhood >
< pageStyle backColour ="navy" />
</ devhood >
</ configuration >
< configSections >
< sectionGroup name ="devhood" >
< section name ="pageStyle" type ="Devhood.PageStyleHandler, PageStyle" />
</ sectionGroup >
</ configSections >
< devhood >
< pageStyle backColour ="navy" />
</ devhood >
</ configuration >
这样就可以在你的web应用中 访问自己定义的节点了。