ASP.NET 設定檔階層和繼承

來源:互聯網
上載者:User
asp.net|繼承   您可以在整個應用程式目錄中分發 ASP.NET 設定檔,以便以繼承階層配置 ASP.NET 應用程式。使用此結構,可以在適當的目錄層級實現應用程式所需層級的配置詳細資料,而不影響較高目錄層級中的配置設定。

  配置結構

  ASP.NET 設定檔稱為 Web.config 檔案,它們可以出現在 ASP.NET 應用程式的多個目錄中。ASP.NET 配置階層具有下列特徵:

  使用應用於設定檔所在的目錄及其所有子目錄中的資源的設定檔。

  允許您將配置資料放在將使它具有適當範圍(整台電腦、所有的 Web 應用程式、單個應用程式或該應用程式中的子目錄)的位置。

  允許重寫從配置階層中的較進階別繼承的配置設定。還允許鎖定配置設定,以防止它們被較低層級的配置設定所重寫。

  將配置設定的邏輯組組織成節的形式。

  設定繼承

  所有的 .NET Framework 應用程式都從一個名為 systemroot\Microsoft .NET\Framework\versionNumber\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 應用程式)的設定。

  ProcessModel 元素

  processModel 元素(ASP.NET 設定架構)元素配置用於伺服器(包括伺服器上的所有 ASP.NET 應用程式)的處理模型。因此,processModel 設定只能放在 Machine.config 檔案中,而且不能被任何 Web.config 檔案中的設定重寫。

  對 processModel 元素的更改將只有在輔助進程重新啟動之後才生效,而不是像其他配置元素那樣在設定更改之後立即生效。

  注意

  當 ASP.NET 以輔助進程隔離模式運行在 Internet 資訊服務 (IIS) 6.0 中時,將使用 IIS 6.0 進程模型,並將忽略 Machine.config 檔案的 processModel 節中的設定。若要配置進程標識、迴圈或其他進程模型值,請使用 IIS 管理器來配置應用程式的 IIS 輔助進程。

  運行時計算配置設定

  當伺服器接收對特定 Web 資源的請求時,ASP.NET 使用位於所請求 URL 的虛擬目錄路徑中的所有設定檔按階層計算該資源的配置設定。本地配置設定將重寫父設定檔中的設定。

  這些設定計算一次,隨後將緩衝以供後續請求使用。ASP.NET 自動監視對檔案進行的更改,並在該檔案的階層內的任何設定檔發生更改時重新計算緩衝。當伺服器收到對特定 URL 的請求時,ASP.NET 將使用緩衝中的配置設定階層來找到所請求的資源。

  除非配置節元素中包括 restartOnExternalChanges="false" 屬性,或者配置設定包含在使用 configSource 屬性連結到 Web.config 檔案的單獨檔案中,否則當配置發生更改時,應用程式將重新啟動。

  單個檔案中配置的多個 ASP.NET 資源

  當管理大量配置設定或者管理 ISP 設定中的用戶端網站時,將多個位置的設定儲存在一個 Web.config 檔案中可能會非常有用。使用 location 元素的 path 屬性,可以對儲存在應用程式子目錄中的多個特定的 ASP.NET 資源進行配置。

  有關如何使用 location 元素的資訊,請參見如何:使用位置設定配置特定目錄。

  虛擬目錄中的設定和物理目錄中的設定發生衝突

  虛擬目錄的配置設定獨立於物理目錄結構,必須小心組織虛擬目錄以防止出現配置問題。例如,您可能有一個具有如下物理目錄結構且名為 MyResource.aspx 的 ASP.NET 檔案。

  C:

  \Subdir1

  \Subdir2

  \MyResource.aspx

  另外,您還可能擁有一個位於 Subdir1 的設定檔、一個映射到 c:\Subdir1 的名為 Vdir1 的虛擬目錄以及一個映射到 c:\Subdir1\Subdir2 的名為 Vdir2 的虛擬目錄。如果用戶端使用 URL http://localhost/vdir1/subdir2/MyResource.aspx 訪問物理位置為 c:\Subdir1\Subdir2\MyResource.aspx 的資源,則該資源將從 Vdir1 繼承配置設定。但是,如果用戶端使用 URL http://localhost/vdir2/MyResource.aspx 訪問同樣的資源,則該資源不從 Vdir1 繼承設定。以這種方式建立虛擬目錄可能會導致意外的結果,甚至會導致應用程式失敗。建議您不要嵌套虛擬目錄,如果不得不這樣做的話,請只使用一個 Web.config 檔案。

  限制 ASP.NET 繼承

  您可能希望限制配置設定的繼承,以增強應用程式的效能、保持高可靠性並簡化管理。限制功能由 allowOverride、lockAttributes、lockAllAttributesExcept、lockAllElementsExcept、lockItem 和 lockElements 屬性控制。有關這些屬性的更多資訊,請參見msdn。



聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.