博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
配置文件web.config(二)
阅读量:4910 次
发布时间:2019-06-11

本文共 4166 字,大约阅读时间需要 13 分钟。

from msdn

      可以用自己的 XML 配置元素来扩展标准的 ASP.NET 配置设置集。若要完成该操作,您必须创建自己的配置节处理程序。

      该处理程序必须是一个用来实现 类的 .NET Framework 类.节处理程序解释并处理 Web.config 文件特定部分中 XML 配置元素中定义的设置,并根据配置设置返回适当的配置对象。处理程序类返回的配置对象可以是任何数据结构;它不限于任何基配置类或配置格式。ASP.NET 使用该配置对象,以对自定义配置元素进行读取和写入。

创建自定义配置节
     
要创建自定义配置节,建议创建一个专门处理自定义配置节的程序集,对每个自定义配置集都创建一个处理类。我们一般是把自定义配置节放在configSecions的sectionGroup中。注意要先声明配置节处理程序,在进行配置的处理。

    将 元素和 元素添加到 Web.config 文件的 元素中,如下面的代码示例所示。正是此声明将自定义节处理程序与节名关联。

section 元素嵌套在
sectionGroup 中是可选的,但是建议这样做,以便更好地组织配置数据。

可以在另一个配置文件中添加节处理程序声明,该配置文件不必是添加自定义配置元素的配置文件,只要声明节处理程序的配置文件在配置文件的层次结构中位于较高的位置。

也就是说:

section 元素的 type 属性必须与程序集清单匹配,否则将出现配置错误。程序集文件必须与定义它的 Web.config 文件位于相同的 ASP.NET 应用程序目录。 

创建自定义配置节处理程序
     
创建自定义配置节处理程序的结构如下:
using System;
using System.Collections;
using System.Text;
using System.Configuration;
using System.Xml;
namespace MyConfigSectionHandler
{
    public class MyHandler : ConfigurationSection
    {
        public MyHandler()
        {
        }
        // Add declarations for child elements and attributes like this:
        // [ConfigurationProperty("<propertyName>", <named parameters>)]
        // public <type> <PropertyName>
        // {
        //     get { return (<type>)this["<propertyName>"]; }
        //     set { this["<propertyName>"] = value; }
        // }
    }
}
       添加您自己的代码,以执行所需的配置工作。如下:
using System;
using System.Collections;
using System.Text;
using System.Configuration;
using System.Xml;
namespace MyConfigSectionHandler
{
    public class MyHandler : ConfigurationSection
    {
        public MyHandler()
        {
        }
        public MyHandler(String attribVal)
        {
            MyAttrib1 = attribVal;
        }
        //每个节点的属性声明
        [ConfigurationProperty("myAttrib1", DefaultValue = "Clowns", IsRequired = true)]
        [StringValidator(InvalidCharacters = "~!@#$%^&*()[]{}/;'\"|\\", MinLength = 1, MaxLength = 60)]
        public String MyAttrib1
        {
            get
            { return (String)this["myAttrib1"]; }
            set
            { this["myAttrib1"] = value; }
        }
        [ConfigurationProperty("myChildSection")]
        public MyChildConfigElement MyChildSection
        {
            get
            { return (MyChildConfigElement)this["myChildSection"]; }
            set
            { this["myChildSection"] = value; }
        }
    }
    public class MyChildConfigElement : ConfigurationElement
    {
        public MyChildConfigElement()
        {
        }
        public MyChildConfigElement(String a1, String a2)
        {
            MyChildAttribute1 = a1;
            MyChildAttribute2 = a2;
        }
        [ConfigurationProperty("myChildAttrib1", DefaultValue = "Zippy", IsRequired = true)]
        [StringValidator(InvalidCharacters = "~!@#$%^&*()[]{}/;'\"|\\", MinLength = 1, MaxLength = 60)]
        public String MyChildAttribute1
        {
            get
            { return (String)this["myChildAttrib1"]; }
            set
            { this["myChildAttrib1"] = value; }
        }
        [ConfigurationProperty("myChildAttrib2", DefaultValue = "Michael Zawondy", IsRequired = true)]
        [StringValidator(InvalidCharacters = "~!@#$%^&*()[]{}/;'\"|\\", MinLength = 1, MaxLength = 60)]
        public String MyChildAttribute2
        {
            get
            { return (String)this["myChildAttrib2"]; }
            set
            { this["myChildAttrib2"] = value; }
        }
    }
}
以编程方式访问自定义配置数据

获取自定义配置对象的一个实例,并使用 方法或 方法来填充该实例。

下面的 ASPX 页的示例使用前一个示例,以枚举自定义配置节的属性和子元素。

<%@ Page Language="C#" %>
<script runat="server">
    protected void Button1_Click(object sender, EventArgs e)
    {
        MyConfigSectionHandler.MyHandler config =
            (MyConfigSectionHandler.MyHandler)System.Configuration.ConfigurationManager.GetSection(
            "myCustomGroup/myCustomSection");
       
        StringBuilder sb = new StringBuilder();
        sb.Append("<h2>Attributes in the myCustomSection Element:</h2>");
        sb.AppendFormat("myAttrib1 = {0}<br/>", config.MyAttrib1.ToString());
        sb.Append("<h2>Attributes in the myChildSection Element:</h2>");
        sb.AppendFormat("myChildAttrib1 = {0}<br/>", config.MyChildSection.MyChildAttribute1.ToString());
        sb.AppendFormat("myChildAttrib2 = {0}<br/>", config.MyChildSection.MyChildAttribute2.ToString());
        Label1.Text = sb.ToString();
        Label1.Visible = true;
    }
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>Untitled Page</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
   
    <h1>Enumerate MyCustomSection</h1>
    <asp:Label ID="Label1" runat="server"
        Text="" />
    <br />
    <asp:Button ID="Button1" runat="server"
        Text="Get Custom Config Info"
        OnClick="Button1_Click" />
    </div>
    </form>
</body>
</html>

转载于:https://www.cnblogs.com/BaiYong/archive/2008/03/16/1108565.html

你可能感兴趣的文章
HDFS应用实例
查看>>
oracle如何利用hostname方式连接数据库
查看>>
oralce ROLLUP
查看>>
ios -仿微信有多级网页时,显示返回跟关闭按钮
查看>>
launcher-数据解析
查看>>
TomCat(Web服务器)
查看>>
webstorm free license server
查看>>
element对象二
查看>>
Android Studio 查找aar依赖的顺序
查看>>
ubuntu+anaconda
查看>>
Excel中通过向导方式插入chart
查看>>
CSS布局和居中常用技巧
查看>>
归并排序
查看>>
个人觉得比较好用的chrome插件
查看>>
Android Studio打包过程和应用安装过程
查看>>
线程的操作方法
查看>>
织梦dedecms中修改标题与简略标题长度的方法
查看>>
Devexpress Ribbon Add Logo
查看>>
iis5.1配置.net网站遇到的问题总结
查看>>
博客园HTML源码运行特制js(原创自Zjmainstay)
查看>>