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>
Web.config的功能和特点
web.config主要是用来存储ASP.NET应用程序的配置信息,例如:安全设置、授权信息,身份认证、事务处理、会话信息、编译信息、自定义及扩展等。
Web.config中节点说明
简要说明一下其中一些节点的功能,我会在后续的系列中详细说明每个节点的功能和用途。
节点名称 |
功能描述 |
configSections |
指定配置节和命名空间声明。 |
section |
定义配置节处理程序与配置元素之间的关联。 |
appSettings |
包含自定义应用程序设置,如文件路径、XML Web services URL 或存储在应用程序的 .ini 文件中的任何信息。 |
connectionStrings |
为 ASP.NET 应用程序和 ASP.NET 功能指定数据库连接字符串(名称/值对的形式)的集合。 |
system.web |
指定 ASP.NET 配置节的根元素,并包含用于配置 ASP.NET Web 应用程序和控制应用程序行为的配置元素 |
compilation |
包含 ASP.NET 使用的所有编译设置 |
authentication |
配置 ASP.NET 身份验证支持。 |
pages |
标识特定于页的配置设置。 |
httpHandlers |
将传入的 URL 请求映射到 IHttpHandler 类。 |
httpModules |
添加、移除或清除应用程序中的 HTTP 模块。 |
system.codedom |
指定 ASP.NET 应用程序支持的编译器 |
system.webServer |
指定适用于 Web 应用程序的 IIS 设置 |
其实还有一些常用配置节信息,但是在默认生成的web.config文件中没有显示出来。
节点名称 |
功能描述 |
authorization |
配置 ASP.NET 身份验证支持。 |
caching |
为 Web 应用程序配置缓存设置。 |
customErrors |
为 ASP.NET 应用程序定义自定义错误信息。 |
globalization |
配置应用程序的全球化设置。 |
httpCookies |
为 Web 应用程序使用的 Cookie 配置属性。 |
httpRuntime |
配置 ASP.NET HTTP 运行时设置。 |
membership |
为 ASP.NET 成员资格配置用于对用户帐户进行管理和身份验证的参数 |
profile |
使用 ASP.NET 配置文件来配置用于管理用户值的参数。 |
roleManager |
为角色管理配置应用程序 |
sessionState |
配置会话状态模块。 |
trace |
配置 ASP.NET 跟踪服务。 |
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 |
允许在任何配置文件或目录中配置该节,如下所示:
如果未使用 allowDefinition 属性,则假设为 Everywhere。这是默认设置。 |
MachineToApplication |
允许在下列文件之一中配置该节:
这不包括位于应用程序中的虚拟目录或物理子目录下的 Web.config 文件。 |
MachineToWebRoot |
允许在下列文件之一中配置该节:
|
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 文件中定义。 |