使用web.config中的configSections
2012-07-13 11:49
176 查看
之前的一篇文章“使用URLRewriter让你的站点牛逼起来- -!”中在讲述使用URLRewriter.dll的时候对web.config文件的配置中,第一步就提到对“configSections”节点的配置,在第二步中又根据第一步的配置来进行了进一步的节点配置——自定义节点的配置(“RewriterConfig”节点)。本文将通过实例简单描述一下configSections加点的使用方法^^
【使用section节点】
考虑一下这个需求,我们想要在web.config中使用自己定义的节点做一些配,例如把网站的超级管理员的登陆账号和密码给配置进去,然后在程序中读取它(当然一般我们不会这么做 - -!)。这样做的好处是我们可以使用自己定义的数据结构(xml格式),而配置信息的安全可以让web.config去管理。但是...,web.config是不可能随随便便让你定义节点的——可以试下自己定义个节点,编译的时候会报错。当然,有时候我们会自己创建个xml文件,那就另当别论了,不过这样做文件的安全性和数据的缓存就要要自己搞定了。
为了满足上面提的需求,我们可以使用configSections(在根节点“configuration”中)了,例如我们要配置一个这样的节点,名为“AdminInfo”,它有两个子节点,分别叫“Account”和“Password”,把他配置到根节点“configuration”中,如下:
xml代码
?
为了让这个自定义的节点为我们所用,现在在“configSections”节点中加入一个“section”节点,如下:
xml代码
?
上面这个配置的意思是,声明一个自定义节点,名字叫“AdminInfo”,这个节点的读取要通过一个名为ConfigSectionsTest.AdminInfoConfigurationSectionHandler的类来读取,那么ConfigSectionsTest.AdminInfoConfigurationSectionHandler类如何定义呢?C#.NET中ConfigurationManager类的GetSection(string sectionName)静态方法就是用于读取这些自定义配置节点的,前提是要提供一个类用于实现IConfigurationSectionHandler接口的唯一方法Create(object parent, object configContext, System.Xml.XmlNodesection),在这个例子中用于实现该接口的类便是ConfigSectionsTest.AdminInfoConfigurationSectionHandler类,下面是这个类的定义:
c#代码
?
实现了接口的方法,Create(object parent, object configContext, System.Xml.XmlNode section)中的最后一个参数便是我们的自定义节点了,是一个Xml节点对象,得到这个几点,我们便可以做我们想做的事情了(例如装成一个实体模型类对象,一个字典,哈希表之类的,只要你喜欢),因为返回的是一个object。
到这里,我们可以测试一下了,顺便创建个页面,在后台代码里面测试,例如点击个按钮然后读取这个节点显示在文本框中,如下:
c#代码
?
【使用sectionGroup节点】
“configSections”中还有一个重要的节点,叫做“sectionGroup”,从名字中可以看出它作用,有了上面的理解作为基础,考虑一下下面这个自定义节点:
xml代码
?
为了使用“WebSiteInfo”这个自定义节点,我们需要在“configSections”中做这样的配置:
xml代码
?
这里应该不用做太多说明了,通过上面的代码我们可以很清楚的理解sectionGroup的作用(ConfigSectionsTest.WebSiteInfoConfigurationSectionHandler类的实现和上面的ConfigSectionsTest.AdminInfoConfigurationSectionHandler完全一样,这里就不打出来鸟),读取节点的方法有点不同,主要是不同在对节点选择的路径上,直接看下面的代码就明白了:
c#代码
?
configSections节点的在开发中是很有用的,一个典型的情景就是文章开头提到的那个URLRewriter.dll组件,在增强应用程序的可移植性上,我们通常会需要一些自定义节点,上面那两个例子也是也说明了这一点(当然配置在appSetting节点中也是一种办法,但就没法灵活地定义自己的数据结构了)。文件说的很浅,要更好的使用这个配置,还是要看官方的文档,列举如下:
MSDN中对configSections 元素的说明:http://msdn.microsoft.com/zh-cn/library/ms228256(v=VS.80).aspx
MSDN中对IConfigurationSectionHandler接口的说明:http://msdn.microsoft.com/zh-cn/library/ms228056(VS.80).aspx
本文的例子在这里:有需要的话请 点击下载 ^—^
【使用section节点】
考虑一下这个需求,我们想要在web.config中使用自己定义的节点做一些配,例如把网站的超级管理员的登陆账号和密码给配置进去,然后在程序中读取它(当然一般我们不会这么做 - -!)。这样做的好处是我们可以使用自己定义的数据结构(xml格式),而配置信息的安全可以让web.config去管理。但是...,web.config是不可能随随便便让你定义节点的——可以试下自己定义个节点,编译的时候会报错。当然,有时候我们会自己创建个xml文件,那就另当别论了,不过这样做文件的安全性和数据的缓存就要要自己搞定了。
为了满足上面提的需求,我们可以使用configSections(在根节点“configuration”中)了,例如我们要配置一个这样的节点,名为“AdminInfo”,它有两个子节点,分别叫“Account”和“Password”,把他配置到根节点“configuration”中,如下:
xml代码
?
xml代码
?
c#代码
?
到这里,我们可以测试一下了,顺便创建个页面,在后台代码里面测试,例如点击个按钮然后读取这个节点显示在文本框中,如下:
c#代码
?
“configSections”中还有一个重要的节点,叫做“sectionGroup”,从名字中可以看出它作用,有了上面的理解作为基础,考虑一下下面这个自定义节点:
xml代码
?
xml代码
?
c#代码
?
MSDN中对configSections 元素的说明:http://msdn.microsoft.com/zh-cn/library/ms228256(v=VS.80).aspx
MSDN中对IConfigurationSectionHandler接口的说明:http://msdn.microsoft.com/zh-cn/library/ms228056(VS.80).aspx
本文的例子在这里:有需要的话请 点击下载 ^—^
相关文章推荐
- 使用Form验证,公共的文件需要给予权限,web.config
- 在Web.Config文件中使用configSource
- 实战1.1下Web.Config配置标记configSections
- asp.net Web.Config使用
- 使用MSAJAX Futures CTP时,在Web.config文件中添加对DataTable的转换支持
- 强制浏览器使用兼容模式,Web.config,httpProtocol
- Webconfig中使用appSettings设置连接字符串(转)
- C#访问数据库使用web.config配置连接字串
- ASP.NET中使用web.config配置数据库连接
- 使用Web.Config Transformation配置灵活的配置文件
- C#使用WebConfigurationManager类修改Web.config文件
- WebConfig的经典使用,大家一起交流一下吧!!!
- web.xml jsp config标签使用详解
- web.config使用方法指南
- 在web.config里使用configSource分隔各类配置
- 在根 web.config 文件之外使用注册为 allowDefinition='MachineToWebRoot' 的节是错误的[原创]
- SharePoint发展 - 使用Session(代码更改webconfig)
- 使用Advanced Installer制作IIS安装包(一:配置IIS和Web.config)
- 使用IConfigurationSectionHandler在web.config中增加自定义配置
- Visual Studio 2010 实用功能:使用web.config发布文件替换功能