ConfigSections的结构


首先我们先回顾一下ConfigSections的结构和它子节点的说明,如下:

   1:  <configSections>
   2:        <sectionGroup name="system.web.extensions" type="System.Web.Configuration.SystemWebExtensionsSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
   3:          <sectionGroup name="scripting" type="System.Web.Configuration.ScriptingSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
   4:            <section name="scriptResourceHandler" type="System.Web.Configuration.ScriptingScriptResourceHandlerSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" 
   5:                     requirePermission="false" allowDefinition="MachineToApplication"/>
   6:            <sectionGroup name="webServices" type="System.Web.Configuration.ScriptingWebServicesSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
   7:              <section name="jsonSerialization" type="System.Web.Configuration.ScriptingJsonSerializationSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" 
   8:                       requirePermission="false" allowDefinition="Everywhere" />
   9:              <section name="profileService" type="System.Web.Configuration.ScriptingProfileServiceSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" 
  10:                       requirePermission="false" allowDefinition="MachineToApplication" />
  11:              <section name="authenticationService" type="System.Web.Configuration.ScriptingAuthenticationServiceSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" 
  12:                       requirePermission="false" allowDefinition="MachineToApplication" />
  13:              <section name="roleService" type="System.Web.Configuration.ScriptingRoleServiceSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" 
  14:                       requirePermission="false" allowDefinition="MachineToApplication" />
  15:            </sectionGroup>
  16:          </sectionGroup>
  17:        </sectionGroup>
  18:      </configSections>  

 

ConfigSectins属性和子节点说明    


属性:

无。

子节点说明:

节点名称

功能描述

sectionGroup

定义配置节处理程序与配置之间的关联。

section

定义配置节处理程序与配置元素之间的关联。

我们不难发现ConfigSectings主要包含SectiongGroup和Section两个子节点,下面就介绍一下这两个节点的属性说明:

1、sectionGroup属性说明

 


属性名称

功能描述

name

指定与下面 type 属性指定的配置节处理程序关联的配置节或元素的名称。

type

指定用来执行如下操作的配置节处理程序类的名称:处理在 name 属性中指定的节或元素中的配置设置。使用以下格式:

type=" Fully qualified class name , assembly file name , version , culture , public key token ",定义必须匹配程序集引用。

程序集文件必须与定义它的 Web.config 文件位于同一个应用程序目录中。

SectionGroup中还是可以在包含多个SectionGroup和Section。

2、section属性说明


属性名称

功能描述

name

指定与 type 属性中指定的配置节处理程序关联的配置节或元素的名称。

type

指定用来执行如下操作的配置节处理程序类的名称:处理在 name 属性中指定的节或元素中的配置设置,格式和上面sectionGroup属性中的type格式相同。

requirePermission

指定是否得到相关的配置部分要求存取权限信息。可选的 Boolean 属性。

restartOnExternalChanges

指定在该节的配置数据发生更改时是否应当重新启动应用程序,不适用于 ASP.NET 应用程序,可选的 Boolean 属性。

allowLocation

指定是否可以在 location 元素内使用该节,仅适用于 ASP.NET 应用程序,默认值为 True。

allowExeDefinition

指定可以在哪个配置文件中使用该节,仅适用于 .NET Framework 客户端应用程序,可选的 Boolean 属性。

allowDefinition

指定可以在哪个配置文件中使用该节,仅适用于 ASP.NET 应用程序,可选的 Boolean 属性。

其实在配置allowDefinition和allowExeDefinition属性的时候,他们其实是有选择值的。allowDefinition的值是在ConfigurationAllowDefinition 枚举中选择,

而allowExeDefinition的值是在ConfigurationAllowExeDefinition 枚举中选择。下面就介绍一下这两个枚举中各个值的的介绍:

1、ConfigurationAllowDefinition 枚举


描述

Everywhere

允许在任何配置文件或目录中配置该节,如下所示:

  • Machine.config。

  • 根 Web.config。

  • 应用程序的 Web.config。

  • 虚拟目录。

  • 应用程序中的物理子目录。

如果未使用 allowDefinition 属性,则假设为 Everywhere。这是默认设置。

MachineToApplication

允许在下列文件之一中配置该节:

  • Machine.config。

  • 根 Web.config。

  • 应用程序的 Web.config。

这不包括位于应用程序中的虚拟目录或物理子目录下的 Web.config 文件。

MachineToWebRoot

允许在下列文件之一中配置该节:

  • Machine.config。

  • 根 Web.config。

MachineOnly

只允许在 Machine.config 文件中配置该节。

注释:

Machine.config的位置:%SystemRoot%\Microsoft.NET\Framework\versionNumber\CONFIG 中。

根 Web.config的位置:%SystemRoot%\Microsoft.NET\Framework\versionNumber\CONFIG 中。

2、ConfigurationAllowExeDefinition 枚举


描述

MachineToApplication

可在 Machine.config 文件或客户端应用程序目录中的 Exe.config 文件中定义 ConfigurationSection。

MachineToRoamingUser

可在 Machine.config 文件、客户端应用程序目录中的 Exe.config 文件、漫游用户目录中的 User.config 文件或本地用户目录中的 User.config 文件中定义 ConfigurationSection。

MachineToLocalUser

可在 Machine.config 文件、客户端应用程序目录中的 Exe.config 文件或漫游用户目录中的 User.config 文件中定义 ConfigurationSection

MachineOnly

ConfigurationSection 只能在 Machine.config 文件中定义。

举例说明


上面介绍了这么多,下面就用两个简单的Demo程序来介绍一下他们的具体应用吧:

1、Demo01介绍section的应用。

2、Demo02介绍包括子元素section的应用。

Demo01介绍一个配置用户信息的Section

以下代码是Section的结构和属性的定义。

   1:  using System;
   2:  using System.Collections.Generic;
   3:  using System.Linq;
   4:  using System.Text;
   5:   
   6:  using System.Configuration;
   7:   
   8:  namespace KevinDiao.MySectionDemo01
   9:  {
  10:      /// <summary>
  11:      /// 自定义Section的结构
  12:      /// </summary>
  13:      public class MySection:ConfigurationSection
  14:      {
  15:          /// <summary>
  16:          /// 用户名称
  17:          /// </summary>
  18:          [ConfigurationProperty("username",IsRequired=true)]
  19:          public string UserName
  20:          {
  21:              get
  22:              {
  23:                  return (string)this["username"];
  24:              }
  25:              set
  26:              {
  27:                  this["username"] = value;
  28:              }
  29:          }
  30:          /// <summary>
  31:          /// 用户密码
  32:          /// </summary>
  33:          [ConfigurationProperty("password", IsRequired = true)]
  34:          public string Password
  35:          {
  36:              get
  37:              {
  38:                  return (string)this["password"];
  39:              }
  40:              set
  41:              {
  42:                  this["password"] = value;
  43:              }
  44:          }
  45:      }
  46:  }

下面介绍时简单的获取程序:

   1:  using System;
   2:  using System.Collections.Generic;
   3:  using System.Linq;
   4:  using System.Web;
   5:  using System.Web.UI;
   6:  using System.Web.UI.WebControls;
   7:   
   8:  using System.Configuration;
   9:  using KevinDiao.MySectionDemo01;
  10:   
  11:  namespace KevinDiao.AspNetDemo01
  12:  {
  13:      public partial class _Default : System.Web.UI.Page
  14:      {
  15:          protected void Page_Load(object sender, EventArgs e)
  16:          {
  17:              MySection mySection = (MySection)ConfigurationManager.GetSection("MySectionHandle01");
  18:              Response.Write("UserName:"+mySection.UserName+"<br/>");
  19:              Response.Write("Password:"+mySection .Password);
  20:          }
  21:      }
  22:  }

web.config中的配置信息

   1:  <configSections>
   2:    <section name="MySectionHandle01"    type="KevinDiao.MySectionDemo01.MySection,KevinDiao.MySectionDemo01"/>
   3:   </configSections>
   4:   <MySectionHandle01 username="kevindiao" password="123456"></MySectionHandle01>

获取到的结果:

UserName:kevindiao
Password:123456

Demo02还是用用户信息来举例吧,以下是具有的代码:

以下是自定义Section的结构:

   1:  using System;
   2:  using System.Collections.Generic;
   3:  using System.Linq;
   4:  using System.Text;
   5:   
   6:  using System.Configuration;
   7:   
   8:  namespace KevinDiao.MySectionDemo02
   9:  {
  10:      /// <summary>
  11:      /// 自定义Section
  12:      /// </summary>
  13:      public class MySectionHandle:ConfigurationSection
  14:      {
  15:          [ConfigurationProperty("users",IsRequired=true)]
  16:          public MySectionElement Users
  17:          {
  18:              get
  19:              {
  20:                  return (MySectionElement)this["users"];
  21:              }
  22:          }
  23:      }
  24:  }

自定义Element:

   1:  using System;
   2:  using System.Collections.Generic;
   3:  using System.Linq;
   4:  using System.Text;
   5:   
   6:  using System.Configuration;
   7:   
   8:  namespace KevinDiao.MySectionDemo02
   9:  {
  10:      /// <summary>
  11:      /// 自定义Element
  12:      /// </summary>
  13:      public class MySectionElement : ConfigurationElement
  14:      {
  15:          /// <summary>
  16:          /// 用户名
  17:          /// </summary>
  18:          [ConfigurationProperty("username", IsRequired = true)]
  19:          public string UserName
  20:          {
  21:              get
  22:              {
  23:                  return (string)this["username"];
  24:              }
  25:          }
  26:          /// <summary>
  27:          /// 密码
  28:          /// </summary>
  29:          [ConfigurationProperty("password", IsRequired = true)]
  30:          public string Password
  31:          {
  32:              get
  33:              {
  34:                  return (string)this["password"];
  35:              }
  36:          }
  37:      }
  38:  }

读取页面:

   1:  using System;
   2:  using System.Collections.Generic;
   3:  using System.Linq;
   4:  using System.Web;
   5:  using System.Web.UI;
   6:  using System.Web.UI.WebControls;
   7:   
   8:  using System.Configuration;
   9:  using KevinDiao.MySectionDemo01;
  10:  using KevinDiao.MySectionDemo02;
  11:   
  12:  namespace KevinDiao.AspNetDemo01
  13:  {
  14:      public partial class _Default : System.Web.UI.Page
  15:      {
  16:          protected void Page_Load(object sender, EventArgs e)
  17:          {
  18:             
  19:   
  20:              MySectionHandle mySectionHandle = (MySectionHandle)ConfigurationManager.GetSection("MySectionHandle02");
  21:              Response.Write("username:"+mySectionHandle .Users .UserName+"<br/>");
  22:              Response.Write("password:" + mySectionHandle.Users.Password + "<br/>");
  23:   
  24:          }
  25:      }
  26:  }

web.config中的配置信息

   1:  <configSections>
   2:      <section name ="MySectionHandle02" type="KevinDiao.MySectionDemo02.MySectionHandle,KevinDiao.MySectionDemo02"/>
   3:     </configSections>
   4:   
   5:    <MySectionHandle02>
   6:      <users username="kevin" password="123"></users>
   7:    </MySectionHandle02>

获取的的结果:

username:kevin 
password:123

今晚就先到这里了,下一篇我们在讨论一下SectionGroup、SectionCollection等的应用,最后在介绍个案例,加深大家的理解和在具体的项目中的应用。

REFERENCE FROM : http://www.cnblogs.com/diaojia/archive/2011/03/29/1998280.html

ASP.NET杂谈-一切都从web.config说起(2)(ConfigSections详解-上 )的更多相关文章

  1. ASP.NET杂谈-一切都从web.config说起(2)(ConfigSections详解-下)

    还是接着上一篇说起,在上两篇中主要和大家探讨了ConfigSection的几种常用形式,并举例几个例子说明了一下.其实它们主要都是继承System.Configuration.Configuratio ...

  2. ASP.NET杂谈-一切都从web.config说起(2)(ConfigSections详解-中)

    我们就接着上一篇继续说,上一篇中介绍了ConfigSection的结构和两个简单的DEMO,本篇就说一下SectionGroup.ConfigurationElementCollection和key/ ...

  3. 10 Things ASP.NET Developers Should Know About Web.config Inheritance and Overrides(转)

    10 Things ASP.NET Developers Should Know About Web.config Inheritance and Overrides Wednesday, Janua ...

  4. WCF项目问题2-无法激活服务,因为它需要 ASP.NET 兼容性。没有未此应用程序启用 ASP.NET 兼容性。请在 web.config 中启用 ASP.NET 兼容性,或将 AspNetCompatibilityRequirementsAttribute.AspNetCompatibilityRequirementsMode 属性设置为 Required 以外的值。

    无法激活服务,因为它需要 ASP.NET 兼容性.没有未此应用程序启用 ASP.NET 兼容性.请在 web.config 中启用 ASP.NET 兼容性,或将 AspNetCompatibility ...

  5. SAE上传web应用(包括使用数据库)教程详解及问题解惑

    转自:http://blog.csdn.net/baiyuliang2013/article/details/24725995 SAE上传web应用(包括使用数据库)教程详解及问题解惑: 最近由于工作 ...

  6. ASP.NET MVC 5 学习教程:Edit方法和Edit视图详解

    原文 ASP.NET MVC 5 学习教程:Edit方法和Edit视图详解 起飞网 ASP.NET MVC 5 学习教程目录: 添加控制器 添加视图 修改视图和布局页 控制器传递数据给视图 添加模型 ...

  7. 【译】ASP.NET MVC 5 教程 - 7:Edit方法和Edit视图详解

    原文:[译]ASP.NET MVC 5 教程 - 7:Edit方法和Edit视图详解 在本节中,我们继续研究生成的Edit方法和视图.但在研究之前,我们先将 release date 弄得好看一点.打 ...

  8. Java web 入门知识 及HTTP协议详解

     Java  web  入门知识 及HTTP协议详解 WEB入门 WEB,在英语中web即表示网页的意思,它用于表示Internet主机上供外界访问的资源. Internet上供外界访问的Web资 ...

  9. 巨人大哥谈Web应用中的Session(session详解)

    巨人大哥谈Web应用中的Session(session详解) 虽然session机制在web应用程序中被采用已经很长时间了,但是仍然有很多人不清楚session机制的本质,以至不能正确的应用这一技术. ...

随机推荐

  1. MMORPG大型游戏设计与开发(客户端架构 part1 of vegine)

    重写有些核心接口的时候,其实遇到了许多的问题,甚至一度的想过要放弃,但是最终还是坚持了下来.在客户端提供的这些接口中,可以清晰的看到客户端所依赖的各种模块的支持,以及各自之间的一些关联.下面只是介绍了 ...

  2. Eclipse汉化后怎么改回英文版(可切换中英文)

    Eclipse汉化后怎么改回英文版(可切换中英文) 很多朋友将MyEclipse汉化后还想改回英文的,其实只要修改MyEclipse的配置文件就可以了,这里我以MyEclipse7.0为例演示一下如何 ...

  3. 太阳系Demo(openGL)

    这个是8年前写的demo,提交的一份作业,按照提出的需求点,以最快和最简单的方式完成功能,因此代码比较简单. 1)截图 2) 功能点描述: 1.公转,自传 2.基础的摄像机运动 3.正视和顶视 4.天 ...

  4. TestNG之注解的生命周期

    有必要介绍一下TestNG注解的生命周期,先看一下官网支持的注解有 @BeforeSuite@AfterSuite@BeforeTest@AfterTest@BeforeGroups@AfterGro ...

  5. Flex编译程序出现 Could not find compiled resource bundle 'SharedResources' for locale 'en_US'.

    Flex编译程序出现 Could not find compiled resource bundle 'SharedResources' for locale 'en_US'. 而且静态类居然为nul ...

  6. Nginx反向代理、负载均衡、页面缓存、URL重写及读写分离详解

    大纲 一.前言 二.环境准备 三.安装与配置Nginx 四.Nginx之反向代理 五.Nginx之负载均衡 六.Nginx之页面缓存 七.Nginx之URL重写 八.Nginx之读写分离 注,操作系统 ...

  7. [No000043]学习Linux操作系统必备基础知识

    Linux操作系统概述 Q1.什么是GNU?Linux与GNU有什么关系? A: 1)GNU是GNU is Not Unix的递归缩写,是自由软件基金会(Free Software Foundatio ...

  8. jQuery实例

    1.$("ul li").fliter(":contains('佳能'),:contains('尼康'),:contains('奥林巴斯')").addClas ...

  9. Apache 的搭建及vim的简单命令

    一. vim 简单命令 pwd     当前路径 ls    当前路径所有目录 cd  目录地址   跳转到指定目录 /xxx  查找xxx x 删除当前字符 n 执行上一次查找 二.为什么使用apa ...

  10. Spring 3.x jar 包详解 与 依赖关系

    以下的内容我会持续更新(当然是我有新发现的时候); 以下内容是我在网上搜索.整理.修改的而成的内容.由于很多内容都是转载了,无法追溯到源头,因此无法一一对原作者进行道谢. 这几天,我查阅大量的官方的文 ...