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

posted @ 2011-03-27 11:56  五香瓜子  阅读(4488)  评论(18编辑  收藏  举报