您可以在整個應用程式目錄中分發 ASP.NET 設定檔,以便以繼承階層配置 ASP.NET 應用程式。使用此結構,可以在適當的目錄層級實現應用程式所需層級的配置詳細資料,而不影響較高目錄層級中的配置設定。
配置結構
ASP.NET 設定檔稱為 Web.config 檔案,它們可以出現在 ASP.NET 應用程式的多個目錄中。ASP.NET 配置階層具有下列特徵:
使用應用於設定檔所在的目錄及其所有子目錄中的資源的設定檔。
允許您將配置資料放在將使它具有適當範圍(整台電腦、所有的 Web 應用程式、單個應用程式或該應用程式中的子目錄)的位置。
允許重寫從配置階層中的較進階別繼承的配置設定。還允許鎖定配置設定,以防止它們被較低層級的配置設定所重寫。
將配置設定的邏輯組組織成節的形式。
設定繼承
所有的 .NET Framework 應用程式都從一個名為\Microsoft .NET\Framework\版本號碼\CONFIG\Machine.config的檔案繼承基本配置設定和預設值。Machine.config 檔案用於伺服器級的配置設定。其中的某些設定不能在位於階層中較低層級的設定檔中被重寫。
.NET 用戶端應用程式(控制台和 Windows 應用程式)使用名為 ApplicationName.config 的設定檔來重寫繼承的設定。ASP.NET 應用程式使用名為 Web.config 的設定檔來重寫繼承的設定。
ASP.NET 配置階層的根是一個稱為根 Web.config 檔案的檔案,它與 Machine.config 檔案位於同一個目錄中。根 Web.config 檔案繼承 Machine.config 檔案中的所有設定。根 Web.config 檔案包括應用於所有運行某一具體版本的 .NET Framework 的 ASP.NET 應用程式的設定。由於每個 ASP.NET 應用程式都從根 Web.config 檔案那裡繼承預設配置設定,因此只需為重寫預設設定的設定建立 Web.config 檔案。
集合元素中的繼承
某些配置元素是集合,例如,namespaces 元素和 customErrors 元素。
在集合中,通常通過 add 子項目向集合中添加配置設定,通過 remove 子項目按鍵名移除配置設定,或者可以通過 clear 子項目清除整個集合。除非允許使用重複項,否則,在子設定檔中添加的設定將重寫父設定檔中同一鍵名的設定。
注意
存在於早期版本的 .NET Framework 中的某些集合對 add 子項目使用不同的元素名稱。例如,customErrors 元素使用 error 子項目向集合中添加自訂錯誤。
如果收到針對 SubDir1 目錄中不存在的檔案發出的請求,ASP.NET 將開始搜尋配置階層,並從最本地的 Web.config 檔案(如果存在,可能位於目前的目錄中,也可能位於目前的目錄的父目錄中)開始。ASP.NET 將搜尋 statusCode 屬性等於“404”的 customErrors 的 error 元素(ASP.NET 設定架構)元素。一旦 ASP.NET 在配置設定中找到 404 錯誤,將 redirect 屬性中的 URL 作為響應返回。
配置設定的範圍
配置設定具有不同的範圍 - 有些具有全域範圍,有些僅對應用程式範圍(根 Web.config 檔案或 Machine.config 檔案)有效。
配置節的範圍是在 Machine.config 檔案中的 configSections 的 section 元素(常規設定架構)元素的 allowDefinition 屬性中為包含在 ASP.NET 中的所有節定義的。例如,authentication 元素(ASP.NET 設定架構)元素具有 MachineToApplication 元素的 allowDefinition 屬性。這意味著,authentication 元素可以在應用程式層級的 Machine.config 檔案、根 Web.config 檔案和 Web.config 檔案中設定。如果它是在子目錄層級設定的,則會引發錯誤。如果沒有為某個節定義 allowDefinition 屬性,則預設值為 Everywhere。
“元素資訊”表中“可配置的位置”旁邊列出了 ASP.NET 配置設定 和 常規配置設定 (ASP.NET) 中每個元素的配置設定範圍。
下表列出了每個檔案在配置階層中的層級、每個檔案的名稱以及對每個檔案的重要繼承特徵的說明。
配置層級 |
檔案名稱 |
檔案說明 |
伺服器 |
Machine.config |
Machine.config檔案包含伺服器上所有 Web 應用程式的 ASP.NET 架構。此檔案位於配置合并階層的頂層。 |
根Web |
Web.config |
伺服器的 Web.config 檔案與 Machine.config 檔案儲存體在同一個目錄中,它包含大部分 system.web 配置節的預設值。運行時,此檔案是從配置階層中的從上往下數第二層合并的。 |
網站 |
Web.config |
特定網站的 Web.config 檔案包含應用於該網站的設定,並向下繼承到該網站的所有 ASP.NET 應用程式和子目錄。 |
ASP.NET應用程式根目錄 |
Web.config |
特定 ASP.NET 應用程式的 Web.config 檔案位於該應用程式的根目錄中,它包含應用於 Web 應用程式並向下繼承到其分支中的所有子目錄的設定。 |
ASP.NET 應用程式子目錄 |
Web.config |
應用程式子目錄的 Web.config 檔案包含應用於此子目錄並向下繼承到其分支中的所有子目錄的設定。 |
用戶端應用程式目錄 |
ApplicationName.configApplicationName.config |
檔案包含 Windows 用戶端應用程式(而非 Web 應用程式)的設定。 |