您可以在整個應用程序目錄中分發 ASPNET 配置文件以便以繼承層次結構配置 ASPNET 應用程序使用此結構可以在適當的目錄級別實現應用程序所需級別的配置詳細信息而不影響較高目錄級別中的配置設置
配置結構
ASPNET 配置文件稱為 nfig 文件它們可以出現在 ASPNET 應用程序的多個目錄中ASPNET 配置層次結構具有下列特征
使用應用於配置文件所在的目錄及其所有子目錄中的資源的配置文件
允許您將配置數據放在將使它具有適當范圍(整台計算機所有的 Web 應用程序單個應用程序或該應用程序中的子目錄)的位置
允許重寫從配置層次結構中的較高級別繼承的配置設置還允許鎖定配置設置以防止它們被較低級別的配置設置所重寫
將配置設置的邏輯組組織成節的形式
配置繼承
所有的 NET Framework 應用程序都從一個名為 systemroot\Microsoft NET\Framework\versionNumber\CONFIG\nfig 的文件繼承基本配置設置和默認值nfig 文件用於服務器級的配置設置其中的某些設置不能在位於層次結構中較低級別的配置文件中被重寫
NET 客戶端應用程序(控制台和 Windows 應用程序)使用名為 nfig 的配置文件來重寫繼承的設置ASPNET 應用程序使用名為 nfig 的配置文件來重寫繼承的設置
ASPNET 配置層次結構的根是一個稱為根 nfig 文件的文件它與 nfig 文件位於同一個目錄中根 nfig 文件繼承 nfig 文件中的所有設置根 nfig 文件包括應用於所有運行某一具體版本的 NET Framework 的 ASPNET 應用程序的設置由於每個 ASPNET 應用程序都從根 nfig 文件那裡繼承默認配置設置因此只需為重寫默認設置的設置創建 nfig 文件
集合元素中的繼承
某些配置元素是集合例如namespaces 元素和 customErrors 元素
在集合中通常通過 add 子元素向集合中添加配置設置通過 remove 子元素按鍵名移除配置設置或者可以通過 clear 子元素清除整個集合除非允許使用重復項否則在子配置文件中添加的設置將重寫父配置文件中同一鍵名的設置
注意
存在於早期版本的 NET Framework 中的某些集合對 add 子元素使用不同的元素名稱例如customErrors 元素使用 error 子元素向集合中添加自定義錯誤
如果收到針對 SubDir 目錄中不存在的文件發出的請求ASPNET 將開始搜索配置層次結構並從最本地的 nfig 文件(如果存在可能位於當前目錄中也可能位於當前目錄的父目錄中)開始ASPNET 將搜索 statusCode 屬性等於的 customErrors 的 error 元素(ASPNET 設置架構)元素一旦 ASPNET 在配置設置中找到 錯誤將 redirect 屬性中的 URL 作為響應返回
配置設置的范圍
配置設置具有不同的范圍 有些具有全局范圍有些僅對應用程序范圍(根 nfig 文件或 nfig 文件)有效
配置節的范圍是在 nfig 文件中的 configSections 的 section 元素(常規設置架構)元素的 allowDefinition 屬性中為包含在 ASPNET 中的所有節定義的例如authentication 元素(ASPNET 設置架構)元素具有 MachineToApplication 元素的 allowDefinition 屬性這意味著authentication 元素可以在應用程序級別的 nfig 文件根 nfig 文件和 nfig 文件中設置如果它是在子目錄級別設置的則會引發錯誤如果沒有為某個節定義 allowDefinition 屬性則默認值為 Everywhere
元素信息表中可配置的位置旁邊列出了 ASPNET 配置設置 和 常規配置設置 (ASPNET) 中每個元素的配置設置范圍
下表列出了每個文件在配置層次結構中的級別每個文件的名稱以及對每個文件的重要繼承特征的說明
配置級別 文件名 文件說明
服務器 nfig nfig文件包含服務器上所有 Web 應用程序的 ASPNET 架構此文件位於配置合並層次結構的頂層
根Web nfig 服務器的 nfig 文件與 nfig 文件存儲在同一個目錄中它包含大部分 systemweb 配置節的默認值運行時此文件是從配置層次結構中的從上往下數第二層合並的
網站 nfig 特定網站的 nfig 文件包含應用於該網站的設置並向下繼承到該站點的所有 ASPNET 應用程序和子目錄
ASPNET應用程序根目錄 nfig 特定 ASPNET 應用程序的 nfig 文件位於該應用程序的根目錄中它包含應用於 Web 應用程序並向下繼承到其分支中的所有子目錄的設置
ASPNET 應用程序子目錄 nfig 應用程序子目錄的 nfig 文件包含應用於此子目錄並向下繼承到其分支中的所有子目錄的設置
客戶端應用程序目錄 nfinfig 文件包含 Windows 客戶端應用程序(而非 Web 應用程序)的設置
ProcessModel 元素
processModel 元素(ASPNET 設置架構)元素配置用於服務器(包括服務器上的所有 ASPNET 應用程序)的處理模型因此processModel 設置只能放在 nfig 文件中而且不能被任何 nfig 文件中的設置重寫
對 processModel 元素的更改將只有在輔助進程重新啟動之後才生效而不是像其他配置元素那樣在設置更改之後立即生效
注意
當 ASPNET 以輔助進程隔離模式運行在 Internet 信息服務 (IIS) 中時將使用 IIS 進程模型並將忽略 nfig 文件的 processModel 節中的設置若要配置進程標識循環或其他進程模型值請使用 IIS 管理器來配置應用程序的 IIS 輔助進程
運行時計算配置設置
當服務器接收對特定 Web 資源的請求時ASPNET 使用位於所請求 URL 的虛擬目錄路徑中的所有配置文件按層次結構計算該資源的配置設置本地配置設置將重寫父配置文件中的設置
這些設置計算一次隨後將緩存以供後續請求使用ASPNET 自動監視對文件進行的更改並在該文件的層次結構內的任何配置文件發生更改時重新計算緩存當服務器收到對特定 URL 的請求時ASPNET 將使用緩存中的配置設置層次結構來找到所請求的資源
除非配置節元素中包括 restartOnExternalChanges=false 屬性或者配置設置包含在使用 configSource 屬性鏈接到 nfig 文件的單獨文件中否則當配置發生更改時應用程序將重新啟動
單個文件中配置的多個 ASPNET 資源
當管理大量配置設置或者管理 ISP 設置中的客戶端網站時將多個位置的設置存儲在一個 nfig 文件中可能會非常有用使用 location 元素的 path 屬性可以對存儲在應用程序子目錄中的多個特定的 ASPNET 資源進行配置
有關如何使用 location 元素的信息請參見如何:使用位置設置配置特定目錄
虛擬目錄中的設置和物理目錄中的設置發生沖突
虛擬目錄的配置設置獨立於物理目錄結構必須小心組織虛擬目錄以防止出現配置問題例如您可能有一個具有如下物理目錄結構且名為 MyResourceaspx 的 ASPNET 文件
C:
\Subdir
\Subdir
\MyResourceaspx
另外您還可能擁有一個位於 Subdir 的配置文件一個映射到 c:\Subdir 的名為 Vdir 的虛擬目錄以及一個映射到 c:\Subdir\Subdir 的名為 Vdir 的虛擬目錄如果客戶端使用 URL x 訪問物理位置為 c:\Subdir\Subdir\MyResourceaspx 的資源則該資源將從 Vdir 繼承配置設置但是如果客戶端使用 URL x 訪問同樣的資源則該資源不從 Vdir 繼承設置以這種方式創建虛擬目錄可能會導致意外的結果甚至會導致應用程序失敗建議您不要嵌套虛擬目錄如果不得不這樣做的話請只使用一個 nfig 文件
限制 ASPNET 繼承
您可能希望限制配置設置的繼承以增強應用程序的性能保持高可靠性並簡化管理限制功能由 allowOverridelockAttributeslockAllAttributesExceptlockAllElementsExceptlockItem 和 lockElements 屬性控制有關這些屬性的更多信息請參見msdn
From:http://tw.wingwit.com/Article/program/net/201311/11349.html