| 手机WAP站
热点: ASP.NET2.0中创建自定义配置

您现在的位置是:首页 > 编程开发 >

ASP.NET2.0中创建自定义配置节处理程序

时间:2012-02-01 20:39   来源:未知   加入收藏 共有评论(0)条

点击:

在ASP.NET中,配置数据存储在web.config文件中。该文件使用xml来表示数据,所有的配置信息都位于根xml标记之间。这里的配置信息分为两个区域:配置节处理程序声明区域和配置节设置区域。

 

配置节处理程序声明区域位于xml标记之间,使用section元素来声明配置节处理程序,可以将这些配置节处理程序声明嵌套在sectionGroup元素中,帮助组织配置信息,如下所示:

 

 

<configSections>

 <sectionGroup name="system.web" type=
"System.Web.Configuration.SystemWebSectionGroup, 
System.Web, Version=2.0.0.0, Culture=neutral, 
PublicKeyToken=b03f5f7f11d50a3a">
     <section name="pages" type=
"System.Web.Configuration.PagesSection, 
System.Web, Version=2.0.0.0, Culture=neutral, 
PublicKeyToken=b03f5f7f11d50a3a" />
     <!-- Other <section /> elements. -->
 </sectionGroup>
<!-- Other <sectionGroup /> and <section /> elements. -->
</configSections>

 

配置节处理程序声明区域中的每个配置节都有一个节处理程序声明,节处理程序是实现了ConfigurationSection类的.Net Framework类。节处理程序声明中包含节的名称(如pages)以及用来处理该节中配置数据的节处理程序类的名称(如System.Web.Configuration,PagesSection)。如下所示:

 

<section name="pages"   type=
"System.Web.Configuration.PagesSection, 
System.Web, Version=2.0.0.0, Culture=neutral, 
PublicKeyToken=b03f5f7f11d50a3a">
</section>

 

当您需要自定义配置节时,需要完成这样几个任务:

 

一,设计自己的配置节处理程序类,实现ConfigurationSection类,并扩展自己所需的功能;

二,在配置节处理程序声明区域中声明节处理程序类;

三,在配置节配置自定义的配置节。

 

实现自己的配置节处理程序通常有两种方式,也就是两种实现模型,分别是声明性模型和编程模型。首先我们以声明性模型来实现一个自定义配置节处理程序。添加CustomSection.cs文件到网站,其内容如下:

 

 

using System;
using System.Configuration;
namespace AntarDev
{
    public class CustomSection:ConfigurationSection
    {
        public CustomSection()
        {   }

        [ConfigurationProperty("CustomAttribute")]
        public String CustomAttribute
        {
            get
            {
                return (String)this["CustomAttribute"];
            }
            set
            {
                this["CustomAttribute"] = value;
            }
        }
    }
}

 

修改web.config文件,在ConfigSections配置节,添加自己的配置节。如下所示:

 

<configSections>
    <sectionGroup  name="newSectionGroup">
        <section  name="newSection"  type="AntarDev.CustomSection"/>
    </sectionGroup>
</configSections>

在之后的配置节设置区域中,使用我们新定义的配置节。如下所示:

 

 

<newSectionGroup>
    <newSection CustomAttribute="AttributeValue" />
</newSectionGroup>

 

然后我们在Default.aspx的Page_Load事件中书写如下代码,以编程方式访问配置数据:

 

protected void Page_Load(object sender, EventArgs e)
{
     AntarDev.CustomSection cus = 
(AntarDev.CustomSection)ConfigurationManager.
GetSection("newSectionGroup/newSection");
     Response.Write
("Attribute=" + cus.CustomAttribute);
}

 

运行网站,将会输出Attribute=AttributeValue,我们的自定义配置节已经可以正常工作,虽然她是那么的原始,而且看起来并不能完成什么具体的工作,但是先让我们耐心理解这个简单的示例吧,这样我们才能进一步学些自定义配置节的高级用法,来帮助我们完成有意义的工作。^_^

 

在CustomSection类的实现中有下面几个细节需要解释一下:

 

1.继承自ConfigurationSection类。这是本文中创建自定义配置节程序类的基础。虽然也可以通过继承IConfigurationSectionHandler创建自定义配置节,但是该接口在.Net2.0中已经被否决,本文中将不讨论基于该接口的实现方法。

 

2.通过对类的一个普通字符串属性(Property)CustomAttribute进行修饰,使之成为了一个配置节的节属性(Attribute),这是通过ConfigurationPropertyAttribute来实现的。关于该属性(Attribute)的详细用法,请查阅MSDN。

 

3.在CustomAttribute属性的get和set访问器中,我们使用了this["CustomAttribute "]来存取节属性的值。为什么可以这样使用呢?因为我们的类继承自ConfigurationSection类,而该类继承自ConfigurationElement,在ConfigurationElement类中定义了两个索引器,如下所示:

 

 

protected internal object this[ConfigurationProperty prop] { get; set; }

protected internal object this[string propertyName] { get; set; }

我们自己的程序中的用法,正是使用的该类中的第二个索引器,对配置数据进行访问。通过声明性模型创建自定义配置节程序类比较简单,因为他对ASP.NET的基础配置架构进行了进一步的封装,使我们更方便使用,同时简化了程序结构。

 

4.[ConfigurationProperty("CustomAttribute")]属性修饰与被修饰属性的两个访问器中的this["CustomAttribute"],其中的字符串必须一致,因为这个字符串就代表着要操作的节属性名称,也就是在web.config中要使用的节属性名称。

 

通过上例中的CustomSection类,我们实现了如下形式的自定义配置节:

 

<newSectionGroup>
   <newSection   CustomAttribute="AttributeValue" />
</newSectionGroup>

现在,newSection元素仅仅是一个元素,如果我们希望newSection元素可以包含子元素呢?如下所示:

 

<newSectionGroup>
   <newSection  CustomAttribute="AttributeValue">
       <SubElement  ElementAttribute1="newValue"></SubElement>
    </newSection>
</newSectionGroup>

 

 

顶一下
(0)
0%
踩一下
(0)
0%
最新评论 进入详细评论页>>
发表评论
已有0条跟贴(点击查看)
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
表情:
验证码:点击更换图片
 

网络技术

更多>>

网站运营

更多>>