程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> .NET實例教程 >> ASP.NET 配置文件層次結構和繼承

ASP.NET 配置文件層次結構和繼承

編輯:.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。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved