微软的经典案例Duwamishi7中使用自定义配置灵活配置应用程序。在.net2.0中也可以通过自定义的配置元素扩展标准的ASP.NET 配置设置集。但是必须创建自己的配置节处理程序,并且该处理程序必须是一个实现 System.Configuration.ConfigurationSection 的类。
       ConfigurationSection类代表一个配置节,在处理自定义配置节时候经常用到的类还包括:用于创建自定义节处理程序的类
       下面是一段处理自定义配置节的代码:
.net2.0 自定义配置节 (处理自定义配置文件)public class MyBookShopConfigurationData
上面的第二个类MyBookShopConfigurationSection就是自定义配置节的自定义处理程序。它有一个MyBookShopConfigurationElementCollection类型的属性,这个属性代表自定义配置节中包含的配置元素集合。而MyBookShopConfigurationElement类代表的就是自定义配置节中的单个配置元素了。MyBookShopConfigurationSection处理的自定义配置节的结构如下(<MyBookShopConfiguration>节):
.net2.0 自定义配置节 (处理自定义配置文件)<?xml version="1.0"?>
.net2.0 自定义配置节 (处理自定义配置文件)
<!-- 
.net2.0 自定义配置节 (处理自定义配置文件)    注意: 除了手动编辑此文件以外,您还可以使用 
.net2.0 自定义配置节 (处理自定义配置文件)    Web 管理工具来配置应用程序的设置。可以使用 Visual Studio 中的
.net2.0 自定义配置节 (处理自定义配置文件)     “网站”->“Asp.Net 配置”选项。
.net2.0 自定义配置节 (处理自定义配置文件)    设置和注释的完整列表在 
.net2.0 自定义配置节 (处理自定义配置文件)    machine.config.comments 中,该文件通常位于 
.net2.0 自定义配置节 (处理自定义配置文件)    \Windows\Microsoft.Net\Framework\v2.x\Config 中
.net2.0 自定义配置节 (处理自定义配置文件)
-->
.net2.0 自定义配置节 (处理自定义配置文件)
<configuration>
.net2.0 自定义配置节 (处理自定义配置文件)    
<configSections>
.net2.0 自定义配置节 (处理自定义配置文件)        
<section name="MyBookShopConfiguration" type="MyBookShop.Common.MyBookShopConfigurationSection, Common, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
.net2.0 自定义配置节 (处理自定义配置文件)    
</configSections>
.net2.0 自定义配置节 (处理自定义配置文件)    
<MyBookShopConfiguration>
.net2.0 自定义配置节 (处理自定义配置文件)        
<BookShopConfigCollection>
.net2.0 自定义配置节 (处理自定义配置文件)            
<clear />
.net2.0 自定义配置节 (处理自定义配置文件)            
<add key="MyBookShop.DataAccess.ConnectionString" value="server=localhost; User ID=user;Password=user;database=MyBookShop" />
.net2.0 自定义配置节 (处理自定义配置文件)        
</BookShopConfigCollection>
.net2.0 自定义配置节 (处理自定义配置文件)    
</MyBookShopConfiguration>
.net2.0 自定义配置节 (处理自定义配置文件)    
<appSettings/>
.net2.0 自定义配置节 (处理自定义配置文件)    
<connectionStrings/>
.net2.0 自定义配置节 (处理自定义配置文件)    
<system.web>
.net2.0 自定义配置节 (处理自定义配置文件)        
<!-- 
.net2.0 自定义配置节 (处理自定义配置文件)            设置 compilation debug="true" 将调试符号插入
.net2.0 自定义配置节 (处理自定义配置文件)            已编译的页面中。但由于这会 
.net2.0 自定义配置节 (处理自定义配置文件)            影响性能,因此只在开发过程中将此值 
.net2.0 自定义配置节 (处理自定义配置文件)            设置为 true。
.net2.0 自定义配置节 (处理自定义配置文件)        
-->
.net2.0 自定义配置节 (处理自定义配置文件)        
<compilation debug="true"/>
.net2.0 自定义配置节 (处理自定义配置文件)        
<!--
.net2.0 自定义配置节 (处理自定义配置文件)            通过 <authentication> 节可以配置 ASP.NET 使用的 
.net2.0 自定义配置节 (处理自定义配置文件)            安全身份验证模式,
.net2.0 自定义配置节 (处理自定义配置文件)            以标识传入的用户。 
.net2.0 自定义配置节 (处理自定义配置文件)        
-->
.net2.0 自定义配置节 (处理自定义配置文件)        
<authentication mode="Windows"/>
.net2.0 自定义配置节 (处理自定义配置文件)        
<!--
.net2.0 自定义配置节 (处理自定义配置文件)            如果在执行请求的过程中出现未处理的错误,
.net2.0 自定义配置节 (处理自定义配置文件)            则通过 <customErrors> 节可以配置相应的处理步骤。具体说来,
.net2.0 自定义配置节 (处理自定义配置文件)            开发人员通过该节可以配置
.net2.0 自定义配置节 (处理自定义配置文件)            要显示的 html 错误页
.net2.0 自定义配置节 (处理自定义配置文件)            以代替错误堆栈跟踪。
.net2.0 自定义配置节 (处理自定义配置文件)
.net2.0 自定义配置节 (处理自定义配置文件)        <customErrors mode="RemoteOnly" defaultRedirect="GenericErrorPage.htm">
.net2.0 自定义配置节 (处理自定义配置文件)            <error statusCode="403" redirect="NoAccess.htm" />
.net2.0 自定义配置节 (处理自定义配置文件)            <error statusCode="404" redirect="FileNotFound.htm" />
.net2.0 自定义配置节 (处理自定义配置文件)        </customErrors>
.net2.0 自定义配置节 (处理自定义配置文件)        
-->
.net2.0 自定义配置节 (处理自定义配置文件)    
</system.web>
.net2.0 自定义配置节 (处理自定义配置文件)
</configuration>
通过这几个类与配置节各元素的对应关系,就可以操所自定义配置节了。
代码中的第一个类MyBookShopConfigurationData就是对自定义配置节的操作类。ReadConnectionString(sting)方法用于从自定义配置节中读取"MyBookShop.DataAccess.ConnectionString"的值。它首先判断在配置文件中有没有"MyBookShopConfiguration"配置节,如果没有则用静态的类常量为默认值添加这个配置节(这一点还是很强悍的,即使配置文件里是空的程序也仍然可以运行!对配置文件的自我修复能力是很好的。),如果有就读取这配置元素的值供应用程序使用。

         总结:通过使用自定义的派生类可以操作自定义配置。这即极大的提高了程序的灵活性也可以增强应用程序的健壮性。还可以根据需求添加更复杂的自定义配置节,但是需要相应的根据自定义配置节的结构关系来添加自定义的派生类。这一点可以说是巨大的灵活性和健壮性代给我们的一点繁索的地方。或许还有更好的方式操作自定义配置节,本人就不太清楚了。/
                                                                                                                                          [本文是罗晓个人原创,转载请注明出处!]

相关文章:

  • 2021-12-22
  • 2022-12-23
  • 2021-08-12
猜你喜欢
  • 2022-02-03
  • 2021-05-16
  • 2022-12-23
  • 2022-02-06
  • 2022-01-07
  • 2021-12-08
  • 2021-07-11
相关资源
相似解决方案