ASP.NET網站組態


ASP.NET應用程式的行為受組態檔案中的不同設定的影響,主要有兩個組態檔案:

  • machine.config
  • web.config

machine.config檔案包含所有支援設定的預設值和機器特定值。機器設定由系統管理員控制,應用程式通常無法存取此檔案。

但是,應用程式可以通過在其根檔案夾中建立web.config檔案來覆蓋預設值。 web.config檔案是machine.config檔案的子集。

如果應用程式包含子目錄,則可以為每個檔案夾定義一個web.config檔案。 每個組態檔案的範圍是以層次自上而下的方式確定的。

任何web.config檔案都可以本地擴充套件,限制或覆蓋上層定義的任何設定。

Visual Studio為每個專案生成一個預設的web.config檔案。應用程式可以在沒有web.config檔案的情況下執行,但是,不能在沒有web.config檔案的情況下偵錯應用程式。

下圖顯示了Web服務教學中使用的範例的解決方案資源管理器

在這個應用程式中,有兩個web.config檔案用於兩個專案,即Web服務和呼叫Web服務的Web站點。

web.config檔案具有組態元素作為根節點。這個元素中的資訊分為兩個主要區域:組態區段處理程式宣告區域和組態區域設定區域。

以下程式碼片段顯示了組態檔案的基本語法:

<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>

組態部分處理程式宣告

組態節處理程式包含在<configSections>標記中。每個組態處理程式指定包含在檔案中的組態節的名稱,該組態節提供一些組態資料。 它具有以下基本語法:

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

它有以下幾點:

  • Clear - 刪除對繼承的部分和部分組的所有參照。
  • Remove - 它刪除對繼承的部分和部分組的參照。
  • Section - 它定義了組態節處理程式和組態元素之間的關聯。
  • sectionGroup - 它定義了組態節處理程式和組態節之間的關聯。

應用程式設定

應用程式設定允許將應用程式範圍的名稱 - 值對儲存為唯讀存取。 例如,可以將自定義應用程式設定定義為:

<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>

連線字串

連線字串顯示哪些資料庫連線字串可用於網站。 例如:

<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元素

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

它組態金鑰以用於表單身份驗證cookie資料的加密和解密。

它還允許組態對檢視狀態資料執行訊息身份驗證檢查的驗證金鑰,並形成身份驗證票據。 基本的語法是:

<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服務。