?? configformat.aspx
字號:
?
<!-- #include virtual="/quickstart/aspplus/include/header.inc" -->
<h4>配置文件格式</h4>
ASP.NET 配置文件是基于 XML 的文本文件(每個都命名為 web.config),可出現在 ASP.NET Web 應用程序服務器上的任何目錄中。
每個 web.config 文件將配置設置應用到它所在的目錄和它下面的所有虛擬子目錄。子目錄中的設置可隨意重寫或修改在父目錄中指定的設置。根配置文件——WinNT\Microsoft.NET\Framework\<version>\config\machine.config,提供整臺計算機的默認配置設置。ASP.NET 配置 IIS 阻止對 web.config 文件進行直接的瀏覽器訪問,以確保這些文件的值不能成為公共的(試圖訪問這些文件將導致 ASP.NET 返回 403 : Access Forbidden)。
<p>
運行時,ASP.NET 使用這些 web.config 配置文件,針對傳入的每個 URL 目標請求分層計算唯一的設置集合(這些設置只計算一次,然后在后面的請求間被緩存起來;ASP.NET 自動監視文件更改,如果有任何配置文件發生更改時則使緩存無效)。
<p>
例如,通過按下列順序應用 web.config 文件設置,對 URL http://myserver/myapplication/mydir/page.aspx 的配置設置進行計算:
<p>
<div class="code"><pre>
Base configuration settings for machine.
C:\WinNT\Microsoft.NET\Framework\v.1.00\config\machine.config
Overridden by the configuration settings for the site (or the root application).
C:\inetpub\wwwroot\web.config
Overridden by application configuration settings.
D:\MyApplication\web.config
Overridden by subdirectory configuration settings.
D:\MyApplication\MyDir\web.config
</pre></div>
如果 web.config 文件位于某個站點(如“Inetpub\wwwroot”)的根目錄下,其配置設置將應用于該站點的所有應用程序。注意,給定目錄或應用程序根中 web.config 文件的存在是完全可選的。如果 web.config 文件不存在,該目錄的所有配置設置將自動從父目錄繼承。
<h5>配置節處理程序和節</h5>
web.config 文件是基于 XML 的文本文件,它可以包含標準的 XML 文檔元素(包括格式正確的標記、注釋、文本、cdata 等等)。該文件的編碼格式可以為 ANSI、UTF-8 或 Unicode;系統自動檢測編碼。
web.config 文件的根元素總是 <b><configuration></b> 標記。ASP.NET 和最終用戶設置因此封裝在該標記中,如下所示:
<div class="code"><pre>
<configuration>
<!- Configuration settings would go here. -->
</configuration>
</pre></div>
<b><configuration></b> 標記通常包含三種不同類型的元素,1) 配置節處理程序聲明,2) 配置節組,3) 配置節設置。
<p>
<ul>
<li><b>配置節處理程序</b>——ASP.NET 配置結構在 web.config 文件中的文件格式或支持的設置方面不進行任何假設。相反,它將處理 web.config 數據的任務委托給配置節處理程序,即實現 <b>IConfigurationSectionHandler</b> 接口的 .NET 框架類。單個 <b>IConfigurationSectionHandler</b> 聲明只需要出現一次,通常是在 machine.config 文件中。子目錄中的 web.config 文件自動繼承此聲明。配置節處理程序通過使用嵌套在 <b><configSections></b> 標記中的節標記指令在 web.config 文件中聲明。節標記可進一步由節組標記限定,將它們組織為邏輯組(參見下文)。每個節標記標識一個表示特定配置數據節的標記名和一個處理該節的關聯 <b>IConfigurationSectionHandler</b> 類。
<p>
<li><b>配置節組</b>——ASP.NET 配置允許出于組織目的對節進行分層分組。<b><sectionGroup></b> 標記可顯示在 <b><configSections></b> 標記的內部或其他 <b><sectionGroup></b> 標記的內部。例如,ASP.NET 節處理程序全都顯示在 <b><system.web></b> 節組中。
<p>
<li><b>配置節</b>——ASP.NET 配置設置在配置標記節中表示,同時嵌套在 <b><configuration></b> 標記(和可選的節組標記)中。對于每個配置節,必須在 config 層次結構中定義適當的節處理程序。例如,在下面的示例中,標記 <b><httpModules></b> 是定義 HTTP 模塊配置數據的配置節。<b>System.Configuration.HttpModulesConfigurationHandler</b> 類負責在運行時解釋 <b><httpModules></b> 標記中包含的內容。注意,節處理程序定義和節必須具有相同的節組限定符(此處為 <b><system.web></b>)。還應注意,標記名區分大小寫,必須按所顯示的原樣鍵入。ASP.NET 的各種屬性和設置也區分大小寫,并且配置運行時不檢查大小寫是否不匹配。
</ul>
<p>
<div class="code"><pre>
<configuration>
<configSections>
<sectionGroup name="system.web">
<section
name="httpModules"
type="System.Web.Configuration.HttpModulesConfigurationHandler,System.Web"
/>
</sectionGroup>
</configSections>
<system.web>
<httpModules>
<add
name="CookielessSession"
type="System.Web.SessionState.CookielessSessionModule,System.Web"
/>
<add
name="OutputCache"
type="System.Web.Caching.OutputCacheModule,System.Web"
/>
<add
name="Session"
type="System.Web.SessionState.SessionStateModule,System.Web"
/>
<add
name="WindowsAuthentication"
type="System.Web.Security.WindowsAuthenticationModule,System.Web"
/>
<add
name="FormsAuthentication"
type="System.Web.Security.FormsAuthenticationModule,System.Web"
/>
<add
name="PassportAuthentication"
type="System.Web.Security.PassportAuthenticationModule,System.Web"
/>
<add
name="UrlAuthorization"
type="System.Web.Security.UrlAuthorizationModule,System.Web"
/>
<add
name="FileAuthorization"
type="System.Web.Security.FileAuthorizationModule,System.Web"
/>
</httpModules>
</system.web>
</configuration>
</pre></div>
<h5>使用位置和路徑</h5>
默認情況下,在頂級 <b><configuration></b> 標記中定義的所有配置設置都應用到包含 web.config 文件的當前目錄位置以及該位置下的所有子路徑。還可通過使用具有適當的約束 <b>path</b> 屬性的 <b><location></b> 標記,將配置設置應用到當前配置文件下的特定子路徑。如果配置文件是主 machine.config 文件,則可以將設置應用到特定的虛擬目錄或應用程序。如果配置文件是 web.config 文件,則可將設置應用到特定的文件、子目錄、虛擬目錄或應用程序。
<p>
<div class="code"><pre>
<configuration>
<location path="EnglishPages">
<system.web>
<globalization
requestEncoding="iso-8859-1"
responseEncoding="iso-8859-1"
/>
</system.web>
</location>
<location path="EnglishPages/OneJapanesePage.aspx">
<system.web>
<globalization
requestEncoding="Shift-JIS"
responseEncoding="Shift-JIS"
/>
</system.web>
</location>
</configuration>
</pre></div>
<h5>鎖定配置設置</h5>
除了使用 <b><location></b> 標記指定路徑信息外,還可以指定安全性以使配置層次結構中的其他深層配置文件無法重寫該設置。若要鎖定一組設置,可以在周圍的 <b><location></b> 標記上指定 <b>allowOverride</b> 屬性并將其設置為假。以下代碼鎖定兩個不同應用程序的模擬設置。
<p>
<div class="code"><pre>
<configuration>
<location path="app1" allowOverride="false">
<system.web>
<identity impersonate="false" userName="app1" password="app1pw" />
</system.web>
</location>
<location path="app2" allowOverride="false">
<system.web>
<identity impersonate="false" userName="app2" password="app2pw" />
</system.web>
</location>
</configuration>
</pre></div>
<p>
注意,如果用戶試圖在其他配置文件中重寫這些設置,配置系統將引發錯誤:
<div class="code"><pre>
<configuration>
<system.web>
<identity userName="developer" password="loginpw" />
</system.web>
</configuration>
</pre></div>
<h5>標準 ASP.NET 配置節</h5>
ASP.NET 提供了若干標準配置節處理程序,用于處理 web.config 文件中的配置設置。下表提供了有關這些節的簡短說明以及指向更多信息的指針。
<p>
<table class="table2" width="90%" cellpadding=3>
<tr>
<th width="200">節名</th><th width="*">說明</th>
</tr>
<tr>
<td><b><httpModules></b></td><td> 負責配置應用程序中的 HTTP 模塊。HTTP 模塊參與處理應用程序中的每個請求。常用的用途包括安全性和記錄。</td>
</tr>
<tr>
<td><b><httpHandlers></b></td><td>負責將傳入的 URL 映射到 <b>IHttpHandler</b> 類。子目錄不繼承這些設置。還負責將傳入的 URL 映射到 <b>IHttpHandlerFactory</b> 類。<b><httpHandlers></b> 節中表示的數據由子目錄分層繼承。有關更多信息,請參閱本教程的 <a href="httphandlers.aspx">Http 處理程序和工廠</a>一節。</td>
</tr>
<tr>
<td><b><sessionState></b></td><td>負責配置會話狀態 HTTP 模塊。有關更多信息,請參閱本教程的<a href="stateoverview.aspx">管理應用程序狀態</a>一節。</td>
</tr>
<tr>
<td><b><globalization></b></td><td>負責配置應用程序的全局化設置。有關更多信息,請參閱本教程的<a href="internationalization.aspx">本地化</a>一節。</td>
</tr>
<tr>
<td><b><compilation></b></td><td>負責配置 ASP.NET 使用的所有編譯設置。有關更多信息,請參閱本教程的<a href="businessobjs.aspx">業務對象</a>和<a href="debugcomsdk.aspx">調試</a>節。</td>
</tr>
<tr>
<td><b><trace></b></td><td>負責配置 ASP.NET 跟蹤服務。有關更多信息,請參閱本教程的<a href="tracingoverview.aspx">跟蹤</a>一節。</td>
</tr>
<tr>
<td><b><processModel></b></td><td>負責配置 IIS Web 服務器系統上的 ASP.NET 進程模型設置。 </td>
</tr>
<tr>
<td><b><browserCaps></b></td><td>負責控制瀏覽器功能組件的設置。有關更多信息,請參閱本教程的<a href="configretrieve.aspx">檢索配置</a>一節。</td>
</tr>
</table>
<!-- #include virtual="/quickstart/aspplus/include/footer.inc" -->
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -