ASP.NET杂谈-一切都从web.config说起(1)(开篇)
这个系列在我脑海中已经酝酿了很久,一直没有动手写,今天晚上终于下定决心,抽空也要把他写出来,其实主要是大家一起来探讨和交流ASP.NET编程。
原始的web.config信息
首先我们新建一个ASP.NET Web应用程序,看看VS自动生成的web.config中有那些内容,如下:
1: <?xml version="1.0" encoding="utf-8"?>
2:
3: <configuration>
4: <configSections>
5: <sectionGroup name="system.web.extensions" type="System.Web.Configuration.SystemWebExtensionsSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
6: <sectionGroup name="scripting" type="System.Web.Configuration.ScriptingSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
7: <section name="scriptResourceHandler" type="System.Web.Configuration.ScriptingScriptResourceHandlerSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication"/>
8: <sectionGroup name="webServices" type="System.Web.Configuration.ScriptingWebServicesSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
9: <section name="jsonSerialization" type="System.Web.Configuration.ScriptingJsonSerializationSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="Everywhere" />
10: <section name="profileService" type="System.Web.Configuration.ScriptingProfileServiceSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" 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" requirePermission="false" allowDefinition="MachineToApplication" />
12: <section name="roleService" type="System.Web.Configuration.ScriptingRoleServiceSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication" />
13: </sectionGroup>
14: </sectionGroup>
15: </sectionGroup>
16: </configSections>
17: <appSettings/>
18: <connectionStrings/>
19: <system.web>
20: <!--
21: 设置 compilation debug="true" 可将调试符号插入
22: 已编译的页面中。但由于这会
23: 影响性能,因此只在开发过程中将此值
24: 设置为 true。
25: -->
26: <compilation debug="false">
27: <assemblies>
28: <add assembly="System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
29: <add assembly="System.Data.DataSetExtensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
30: <add assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
31: <add assembly="System.Xml.Linq, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
32: </assemblies>
33: </compilation>
34: <!--
35: 通过 <authentication> 节可以配置 ASP.NET 用来
36: 识别进入用户的
37: 安全身份验证模式。
38: -->
39: <authentication mode="Windows" />
40: <!--
41: 如果在执行请求的过程中出现未处理的错误,
42: 则通过 <customErrors> 节可以配置相应的处理步骤。具体说来,
43: 开发人员通过该节可以配置
44: 要显示的 html 错误页
45: 以代替错误堆栈跟踪。
46:
47: <customErrors mode="RemoteOnly" defaultRedirect="GenericErrorPage.htm">
48: <error statusCode="403" redirect="NoAccess.htm" />
49: <error statusCode="404" redirect="FileNotFound.htm" />
50: </customErrors>
51: -->
52: <pages>
53: <controls>
54: <add tagPrefix="asp" namespace="System.Web.UI" assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
55: <add tagPrefix="asp" namespace="System.Web.UI.WebControls" assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
56: </controls>
57: </pages>
58: <httpHandlers>
59: <remove verb="*" path="*.asmx"/>
60: <add verb="*" path="*.asmx" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
61: <add verb="*" path="*_AppService.axd" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
62: <add verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" validate="false"/>
63: </httpHandlers>
64: <httpModules>
65: <add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
66: </httpModules>
67: </system.web>
68: <system.codedom>
69: <compilers>
70: <compiler language="c#;cs;csharp" extension=".cs" warningLevel="4"
71: type="Microsoft.CSharp.CSharpCodeProvider, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
72: <providerOption name="CompilerVersion" value="v3.5"/>
73: <providerOption name="WarnAsError" value="false"/>
74: </compiler>
75: </compilers>
76: </system.codedom>
77: <!--
78: 在 Internet 信息服务 7.0 下运行 ASP.NET AJAX 需要 system.webServer
79: 节。对早期版本的 IIS 来说则不需要此节。
80: -->
81: <system.webServer>
82: <validation validateIntegratedModeConfiguration="false"/>
83: <modules>
84: <remove name="ScriptModule" />
85: <add name="ScriptModule" preCondition="managedHandler" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
86: </modules>
87: <handlers>
88: <remove name="WebServiceHandlerFactory-Integrated"/>
89: <remove name="ScriptHandlerFactory" />
90: <remove name="ScriptHandlerFactoryAppServices" />
91: <remove name="ScriptResource" />
92: <add name="ScriptHandlerFactory" verb="*" path="*.asmx" preCondition="integratedMode"
93: type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
94: <add name="ScriptHandlerFactoryAppServices" verb="*" path="*_AppService.axd" preCondition="integratedMode"
95: type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
96: <add name="ScriptResource" preCondition="integratedMode" verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
97: </handlers>
98: </system.webServer>
99: <runtime>
100: <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
101: <dependentAssembly>
102: <assemblyIdentity name="System.Web.Extensions" publicKeyToken="31bf3856ad364e35"/>
103: <bindingRedirect oldVersion="1.0.0.0-1.1.0.0" newVersion="3.5.0.0"/>
104: </dependentAssembly>
105: <dependentAssembly>
106: <assemblyIdentity name="System.Web.Extensions.Design" publicKeyToken="31bf3856ad364e35"/>
107: <bindingRedirect oldVersion="1.0.0.0-1.1.0.0" newVersion="3.5.0.0"/>
108: </dependentAssembly>
109: </assemblyBinding>
110: </runtime>
111: </configuration>
我们看看上面web.config文件信息,不难看出他其实就是一个XML文件。
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 跟踪服务。 |
小结
这个文章是开篇,只是把web.config的主要功能和其中的配置信息简单的描述了一下。
备注:
Visual Studio版本: 2008 SP1。
参考:
1、MSDN