这几天在做一个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; } } } }
这里有两个类:继承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>
这样就可以在你的web应用中 访问自己定义的节点了。