`

在Web.config配置文件中自定义配置节点(转载)

阅读更多

摘要:

    大部分ASP.NET应用程序都包含很多个配置信息,比较常见的有连接字符串配置ConnectionString;当我们需要用到Login控件自动发送Email时,我们就要配置Email服务器节点;还有很多如Page节点可以引入程序集和命名空间等等。根据我的经验很多网站的初始化信息(默认设置)很多都会保存在数据库中,也有很多保存在配置文件中,他们各有各的优点。我们可以在web.config中定义我们自己的节点,然后再读取或更新自定义配置文件,当然我们也可以自定义一个配置文件并将其解析读取。本文主要讲的是利用ASP.NET给我提供的一些APIs在Web.config中自定义配置节点。

     为了能够更好的说明,我们先定义一个配置节点<nexplus></nexplus>,它有一个属性网站名称webName。有自己的Providers,以及一个States节点,配置如下:

<!----> 1 <NExplus webName="Custom configuration section in web.config">
 2         <providers>
 3             <add name="CommonProvider" type="NExplus.Data.SqlCommonProvider,NExplus.Data" connectionStringName="SqlServer"/>
 4         <providers>
 5         <states>
 6             <add name="厦门" code="0592"/>
 7             <add name="福州" code="0591"/>
 8             <add name="三明" code="0598"/>
 9         <states>
10 <NExplus>
11 

读取方法:

    配置文件中就是XML文件,如果是我们自定义地配置文件可以用DotNet读取XML的方法通过序列化和反序列化等来读取,在以后的版本中还可以通过XLinQ来读取。而在web.config文件中主要可以通过两种方法来读取配置文件,当然首先要做的是在<configsections></configsections>节点中配置关联的操作类及其程序集

1.定义一个类,实现System.Configuration.IConfigurationSectionHandler接口,这个方法很简单就是实现一个方法,这里就不再多说了。

2.在ASP.NET2.0中我们已经能够很简单的操作配置文件中的节点了,他为我们提供了一系列的类如我们定义一个类只要继承ConfigurationSection就可以定义我们的节点了,子节点可以继承ConfigurationElement等等。只要在属性上标注ConfigurationProperty attribute即可。定义配置类:

<!----> 1 public class CustomConfiguration : ConfigurationSection
 2 {
 3    [ConfigurationProperty ("webName", DefaultValue="Custom configuration section in web.config ", IsRequired=false)]
 4    public string WebName
 5    {
 6       get
 7       {
 8          return this["webName"as string;
 9       }
10    }
11 }
12 

 

   以上只列出了读取属性的方法,每一个用ConfigurationProperty attribute标注的属性就能够自动从web.config文件中反序列过来实例化当前类。下面我们来看看ConfigurationProperty attribute的每一个属性的作用。

--Name:配置节点名称或属性名称,要求唯一标识。

--DefaultValue:配置文件中每个属性的默认值,如果配置文件中没有定义此属性则在代码中调用此属性时,将取得这个值。

--IsRequired:标明当前属性是否必须,如果为true而配置文件中并没有定义此属性,当访问此网站时将抛出错误。

   我们可以通过System.Web.Configuration.WebConfigurationManager来获取此节点的实例,代码如下:

 

<!---->1 public static CumstomConfiguration GetConfig(){
2    return WebConfigurationManager.GetSection(“NExplus”) as CumstomConfiguration;
3 }
4 

 

基于集合配置属性的读取:

    很多时候我们需要得到一个集合的所有配置,最常见的莫过于providers,系统已经为我们准备好了ProviderCollection,我们只要直接引用就好了。但是如果遇到向上面定义的<states></states>节点的读取就需要我们自己来写一个集合,这个集合要继承ConfigurationElementCollection类,而当前实体类需继承ConfigurationElement类。为了读取<states></states>节点我们定义一个实体类如下:

 

 1 public class ConfigurationState : ConfigurationElement
 2 {
 3    [ConfigurationProperty("name", IsRequired=true)]
 4    public string Name
 5    {
 6       get
 7       {
 8          return this["name"as string;
 9       }
10    }
11 
12    [ConfigurationProperty("code", IsRequired=false)]
13     public string Code
14    {
15       get
16       {
17          return this["code"as string;
18       }
19    }
20 }
21 

 

   有了实体类我们当然要写一个集合类,代码如下:

 

<!----> 1 public class ConfigurationStateCollection : ConfigurationElementCollection
 2 {
 3    public ConfigurationState this[int index]
 4    {
 5       get
 6       {
 7          return base.BaseGet(index) as ConfigurationState;
 8       }
 9       set
10       {
11          if (base.BaseGet(index) != null)
12          {
13             base.BaseRemoveAt(index);
14          }
15          this.BaseAdd(index, value);
16       }
17    }
18 
19    protected override ConfigurationElement CreateNewElement()
20    {
21       return new ConfigurationState();
22    }
23 
24    protected override object GetElementKey(ConfigurationElement element)
25    {
26       return ((ConfigurationState)element).Name;
27    } 
28 }
29 

 

      我们需要对当前集合进行索引读取或设置,重写了两个方法,从而能够获取当前实例和获取当前配置节点的名称等,当然最后一步就是要将它加入到配置类中(次配置类一定要在configSettings节点中标注)。代码如下:

 

<!----> 1 public class CustomConfiguration : ConfigurationSection
 2 {
 3     
 4 
 5    [ConfigurationProperty("states")]
 6    public ConfigurationStateCollection CustomStates
 7    {
 8       get 
 9       { 
10          return this["states"as ConfigurationStateCollection; 
11       }
12    }
13 }
14 

 

总结:

    这篇文章已经不是什么新鲜的事了,由于最近我也在做这个事情,其中值得说明的是在providers的应用,我们可以通过ProvidersCollection来读取其集合,通过ProvidersHelper来实例化当前provider,如果在你的数据库提供者抽象类中继承ProviderBase类万事就OK了。如果考虑到性能问题可以借助Cache来提高一些性能,最后还是希望能给更多人带来一点帮助,分享一下我的经验。

分享到:
评论

相关推荐

    Web.config配置文件详解

    在ASP.NET框架中,`Web.config`文件是每个Web应用程序的核心配置文件,它定义了应用程序的行为、设置和安全策略。本文将深入探讨`Web.config`配置文件的常见用法和部分关键节点。 首先,`Web.config`是一个基于XML...

    C#读取web.config配置,建立高速缓存机制

    首先,Web.config配置文件的作用是给.NET应用程序提供一个统一的配置管理平台。它的结构类似于XML,包含特定的配置节点和属性,用于存放应用程序需要的配置信息。通过在web.config中添加节点,并在其中使用子节点来...

    web.config文件配置详解

    综上所述,Web.config文件是一个非常重要的配置文件,它包含了.NET应用程序运行时的大量配置信息,从数据库连接到身份验证机制,从应用程序的全局设置到页面特定的配置,都可在Web.config文件中进行详细配置。...

    aspnet中web.config配置节点详解.rar

    这个压缩包文件"aspnet中web.config配置节点详解.rar"包含了一个名为"aspnet中web.config配置节点详解.doc"的文档,很显然是为了详细解析`web.config`文件中的各个配置节点。下面我们将深入探讨这些关键节点。 1. `...

    Web.config配置文件详解[定义].pdf

    Web.config配置文件是ASP.NET应用程序的核心配置文件,用于定义应用程序的运行时行为、设置和配置。它是基于XML的,提供了一种结构化的方式来管理应用程序的配置信息,包括但不限于数据库连接字符串、应用程序设置、...

    web.config 自定义配置 demo

    在.NET框架中,`web.config`文件是ASP.NET应用程序的核心配置文件,用于存储应用程序的配置信息,如连接字符串、身份验证设置、权限控制等。这个"web.config 自定义配置 demo"是一个实例,展示了如何自定义`web....

    Web.config自定义节点使用

    在.NET框架中,`Web.config`文件是ASP.NET应用程序的核心配置文件,用于存储应用程序的配置信息,如连接字符串、身份验证设置、权限控制等。在本文中,我们将深入探讨如何在`Web.config`中添加自定义节点,并读取...

    Web.config配置详解

    ### Web.config配置详解 #### 一、Web.config 文件概述 Web.config 文件是 ASP.NET 应用程序中的核心配置文件,采用 XML 格式编写。它主要用于存储与 ASP.NET Web 应用程序相关的各种配置信息。每个 ASP.NET Web ...

    asp.net2.0的web.config的配置教学

    总之,`web.config` 文件在 ASP.NET 2.0 中扮演着至关重要的角色,它允许开发者根据需要调整应用程序的配置,以满足不同场景的需求。了解和熟练掌握 `web.config` 的配置是每个 ASP.NET 开发者必备的技能。

    asp.net连接sql数据库web.config配置

    `web.config`是ASP.NET应用程序的核心配置文件,它包含了诸如应用程序设置、连接字符串、身份验证模式等重要信息。本篇文章将深入探讨如何在`web.config`中配置SQL数据库连接,并解释相关的参数说明。 首先,我们...

    VS2005中使用web.config进行调试

    在Visual Studio 2005 (VS2005) 中,`web.config` 文件是ASP.NET应用程序的核心配置文件,用于定义应用的行为、安全性、设置和调试参数。当新建一个网站项目时,VS2005默认可能不会自动创建`web.config`文件,但这...

    ASP.NET Web.config配置文件详解

    ASP.NET的Web.config配置文件是ASP.NET框架中用于存储应用程序级别的配置信息的关键文件。这个文件允许开发者自定义和管理应用程序的多种设置,如身份验证、授权、编译、错误处理和HTTP运行时行为等。下面将详细介绍...

    ASP.NET2.0配置文件Web.config 详细解释.rar

    ASP.NET 2.0的配置文件`Web.config`是每个ASP.NET应用程序的核心组成部分,它用于存储应用程序的配置信息,如数据库连接字符串、安全性设置、页面生命周期控制等。这份压缩包包含了一个详细的`Web.config`解释文本,...

    实例--自定义Web.config文件中的ConfigSection配置节

    在.NET框架中,Web.config文件是ASP.NET应用程序的主要配置文件,用于存储应用程序的配置信息,如连接字符串、身份验证设置、授权规则等。本实例将深入讲解如何自定义Web.config文件中的ConfigSection配置节,以便...

    web.config配置节介绍

    ### web.config配置节详细介绍 #### 一、概述 在.NET框架中,`web.config`扮演着极其重要的角色,尤其在ASP.NET应用中更是不可或缺的一部分。它不仅提供了灵活的方式来管理应用程序的配置信息,还大大简化了应用...

Global site tag (gtag.js) - Google Analytics