Asp.net 简明教程

ASP.NET - Configuration

ASP.NET 应用程序的行为受配置文件中不同设置的影响:

  1. machine.config

  2. web.config

machine.config 文件包含所有支持设置的默认值和特定于计算机的值。机器设置由系统管理员控制,应用程序通常无权访问此文件。

但是,应用程序可以通过在其根文件夹中创建 web.config 文件来替代默认值。 web.config 文件是 machine.config 文件的一个子集。

如果应用程序包含子目录,则可以为每个文件夹定义一个 web.config 文件。每个配置文件的范围以自上而下的分层方式确定。

任何 web.config 文件在本地都可以扩展、限制或替代上层定义的任何设置。

Visual Studio 为 Web 服务教程中使用的每个示例项目生成一个默认 web.config 文件。应用程序可以在没有 web.config 文件的情况下执行,但是您无法在没有 web.config 文件的情况下调试应用程序。

下图显示 Web 服务教程中用于示例的 Solution Explorer:

solution explorer2

在此应用程序中,有对应两个项目的两个 web.config 文件,即 Web 服务和调用 Web 服务的 Web 站点。

web.config 文件的根节点是 configuration 元素。此元素中的信息分为两个主要区域:配置节处理程序声明区域和配置节设置区域。

以下代码段显示配置文件的基本语法:

<configuration>

   <!-- Configuration section-handler declaration area. -->
      <configSections>
         <section name="section1" type="section1Handler" />
         <section name="section2" type="section2Handler" />
      </configSections>
   <!-- Configuration section settings area. -->

   <section1>
      <s1Setting1 attribute1="attr1" />
   </section1>

   <section2>
      <s2Setting1 attribute1="attr1" />
   </section2>

   <system.web>
      <authentication mode="Windows" />
   </system.web>

</configuration>

Configuration Section Handler declarations

配置节处理程序包含在 <configSections> 标签内。每个配置处理程序指定文件中包含的配置节的名称,该节提供了一些配置数据。它具有以下基本语法:

<configSections>
   <section />
   <sectionGroup />
   <remove />
   <clear/>
</configSections>

它具有以下元素:

  1. Clear - 删除所有对继承节和节组的引用。

  2. Remove - 删除对继承节和节组的引用。

  3. Section - 定义配置节处理程序和配置元素之间的关联。

  4. Section group - 定义了配置节处理程序与配置节之间的关联。

Application Settings

应用程序设置允许存储用于只读访问的应用范围的名称值对。例如,你可以定义如下自定义应用程序设置:

<configuration>
   <appSettings>
      <add key="Application Name" value="MyApplication" />
   </appSettings>
</configuration>

例如,你还可以存储一本书的名称及其 ISBN 号:

<configuration>
   <appSettings>
      <add key="appISBN" value="0-273-68726-3" />
      <add key="appBook" value="Corporate Finance" />
   </appSettings>
</configuration>

Connection Strings

连接字符串显示了网站可用的数据库连接字符串。例如:

<connectionStrings>
   <add name="ASPDotNetStepByStepConnectionString"
      connectionString="Provider=Microsoft.Jet.OLEDB.4.0;
      Data Source=E:\\projects\datacaching\ /
      datacaching\App_Data\ASPDotNetStepByStep.mdb"
      providerName="System.Data.OleDb" />

   <add name="booksConnectionString"
      connectionString="Provider=Microsoft.Jet.OLEDB.4.0;
      Data Source=C:\ \databinding\App_Data\books.mdb"
      providerName="System.Data.OleDb" />
</connectionStrings>

System.Web Element

system.web 元素指定 ASP.NET 配置节的根元素,并包含配置 ASP.NET Web 应用程序和控制应用程序行为的配置元素。

它包含大多数在一般应用程序中需要调整的配置元素。该元素的基本语法如下所示:

<system.web>
   <anonymousIdentification>
   <authentication>
   <authorization>
   <browserCaps>
   <caching>
   <clientTarget>
   <compilation>
   <customErrors>
   <deployment>
   <deviceFilters>
   <globalization>
   <healthMonitoring>
   <hostingEnvironment>
   <httpCookies>
   <httpHandlers>
   <httpModules>
   <httpRuntime>
   <identity>
   <machineKey>
   <membership>
   <mobileControls>
   <pages>
   <processModel>
   <profile>
   <roleManager>
   <securityPolicy>
   <sessionPageState>
   <sessionState>
   <siteMap>
   <trace>
   <trust>
   <urlMappings>
   <webControls>
   <webParts>
   <webServices>
   <xhtmlConformance>
</system.web>

下表简要介绍 system.web 元素部分常见子元素:

AnonymousIdentification

需要此子元素来识别未通过认证但需要授权的用户。

Authentication

它配置身份验证支持。基本语法如下所示:

<authentication mode="[Windows|Forms|Passport|None]">
   <forms>...</forms>
   <passport/>
</authentication>

Authorization

配置授权支持。基本语法如下所示:

<authorization>
   <allow .../>
   <deny .../>
</authorization>

Caching

配置缓存设置。语法如下所示:

<caching>
   <cache>...</cache>
   <outputCache>...</outputCache>
   <outputCacheSettings>...</outputCacheSettings>
   <sqlCacheDependency>...</sqlCacheDependency>
</caching>

CustomErrors

定义自定义错误消息。基本语法如下所示:

<customErrors defaultRedirect="url" mode="On|Off|RemoteOnly">
   <error. . ./>
</customErrors>

Deployment

定义用于部署的配置设置。基本语法如下:

<deployment retail="true|false" />

HostingEnvironment

定义用于托管环境的配置设置。基本语法如下:

<hostingEnvironment idleTimeout="HH:MM:SS" shadowCopyBinAssemblies="true|false"
   shutdownTimeout="number" urlMetadataSlidingExpiration="HH:MM:SS" />

Identity

配置应用程序标识。基本语法如下所示:

<identity impersonate="true|false" userName="domain\username"
   password="<secure password>"/>

MachineKey

配置用于加密和解密 Forms 身份验证 cookie 数据的密钥。

它还允许配置一个验证密钥,用于对视图状态数据和 Forms 身份验证票证执行消息身份验证检查。基本语法如下:

<machineKey validationKey="AutoGenerate,IsolateApps" [String]
   decryptionKey="AutoGenerate,IsolateApps" [String]
   validation="HMACSHA256" [SHA1 | MD5 | 3DES | AES | HMACSHA256 |
   HMACSHA384 | HMACSHA512 | alg:algorithm_name]
   decryption="Auto" [Auto | DES | 3DES | AES | alg:algorithm_name]
/>

Membership

配置用于管理和验证用户帐户的参数。基本语法如下:

<membership defaultProvider="provider name"
   userIsOnlineTimeWindow="number of minutes" hashAlgorithmType="SHA1">
   <providers>...</providers>
</membership>

Pages

提供特定于页面的配置。基本语法如下:

<pages asyncTimeout="number" autoEventWireup="[True|False]"
      buffer="[True|False]" clientIDMode="[AutoID|Predictable|Static]"
      compilationMode="[Always|Auto|Never]"
      controlRenderingCompatibilityVersion="[3.5|4.0]"
      enableEventValidation="[True|False]"
      enableSessionState="[True|False|ReadOnly]"
      enableViewState="[True|False]"
      enableViewStateMac="[True|False]"
      maintainScrollPositionOnPostBack="[True|False]"
      masterPageFile="file path"
      maxPageStateFieldLength="number"
      pageBaseType="typename, assembly"
      pageParserFilterType="string"
      smartNavigation="[True|False]"
      styleSheetTheme="string"
      theme="string"
      userControlBaseType="typename"
      validateRequest="[True|False]"
      viewStateEncryptionMode="[Always|Auto|Never]" >

   <controls>...</controls>
   <namespaces>...</namespaces>
   <tagMapping>...</tagMapping>
   <ignoreDeviceFilters>...</ignoreDeviceFilters>
</pages>

Profile

它配置用户配置文件参数。基本语法为:

<profile enabled="true|false" inherits="fully qualified type reference"
   automaticSaveEnabled="true|false" defaultProvider="provider name">

   <properties>...</properties>
   <providers>...</providers>

</profile>

RoleManager

它配置用户角色设置。基本语法为:

<roleManager cacheRolesInCookie="true|false" cookieName="name"
   cookiePath="/" cookieProtection="All|Encryption|Validation|None"
   cookieRequireSSL="true|false " cookieSlidingExpiration="true|false "
   cookieTimeout="number of minutes" createPersistentCookie="true|false"
   defaultProvider="provider name" domain="cookie domain">
   enabled="true|false"
   maxCachedResults="maximum number of role names cached"

   <providers>...</providers>
</roleManager>

SecurityPolicy

它配置安全策略。基本语法为:

<securityPolicy>
   <trustLevel />
</securityPolicy>

UrlMappings

它定义映射以隐藏原始 URL 并提供更友好的 URL。基本语法为:

<urlMappings enabled="true|false">
   <add.../>
   <clear />
   <remove.../>
</urlMappings>

WebControls

它提供用于客户端脚本的共享位置的名称。基本语法为:

<webControls clientScriptsLocation="String" />

WebServices

这配置 Web 服务。