ASP.NET 組態檔結構 (區段和區段處理常式)
更新:2007 年 11 月
所有的 ASP.NET 組態資訊都位於 Web.config 檔案的 configuration 項目內。這個項目內的組態資訊可分為兩大區:組態區段處理常式宣告區和組態區段設定區。
組態區段處理常式宣告
組態區段處理常式宣告區位於 Web.config 檔案的 configSections 項目中。該項目包含 ASP.NET 組態的 section 項目,區段處理常式會在此宣告。這些組態的區段處理常式宣告可以套疊於 sectionGroup 項目中,以協助組織組態資訊。一般而言,sectionGroup 項目代表組態設定套用至的命名空間。例如,所有的 ASP.NET 組態區段處理常式都會分類在 system.web 區段群組中,如下列程式碼範例所示。
<sectionGroup name="system.web"
type="System.Web.Configuration.SystemWebSectionGroup, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<!-- <section /> elements. -->
</sectionGroup>
組態區段設定區中的每個組態區段都會有區段處理常式宣告。區段處理常式就是實作 ConfigurationSection 介面的 .NET Framework 類別 (Class)。區段處理常式宣告包含組態設定區段的名稱 (例如,pages) 和處理該區段中的組態資料的區段處理常式類別的名稱 (例如,System.Web.Configuration.PagesSection)。這會在以下程式碼範例中說明。
<section name="pages"
type="System.Web.Configuration.PagesSection, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
</section>
您只需要宣告一次組態區段處理常式,預設 ASP.NET 組態區段的區段處理常式已經在預設 Machine.config 檔中宣告。ASP.NET 應用程式中的根 Web.config 檔案和其他組態檔,會自動繼承宣告於 Machine.config 檔中的組態處理常式。如果要建立處理自訂設定區段的自訂區段處理常式類別,只需宣告新的區段處理常式即可。
預先定義的 ASP.NET 組態設定區段列於 ASP.NET 組態設定中。如需自行定義自訂設定區段以及開發組態區段處理常式以管理這些區段的詳細資訊,請參閱用來建立自訂區段處理常式的類別 和 HOW TO:使用 ConfigurationSection 建立自訂組態區段。
組態區段設定
組態區段處理程式宣告區後面接著組態區段設定區,其中包含實際的組態設定。
根據預設,會以內部設定或在根組態檔中設定的方式,針對 configSections 區域中的每個 section 和 sectionGroup 項目指定組態區段項目。您可以在 systemroot\Microsoft.NET\Framework\versionNumber\CONFIG\Machine.config.comments 檔案中檢視這些預設值。
組態區段項目還可能包含子項目,且由處理其父項目的相同區段處理常式進行處理。例如,下列 pages 項目所包含的 namespaces 項目沒有對應的區段處理常式,因為該項目是由 pages 區段處理常式進行處理。
<pages
buffer="true"
enableSessionState="true"
asyncTimeout="45"
<!-- Other attributes. -->
>
<namespaces>
<add namespace="System" />
<add namespace="System.Collections" />
</namespaces>
</pages>
Web.config 檔案的範例
下列的程式碼範例顯示前述的程式碼範例在 Web.config 檔案中的位置。請注意,pages 項目的 namespaces 項目沒有組態區段處理常式宣告,這是因為 System.Web.Configuration.PagesSection 區段處理常式會處理 pages 設定區段的所有子項目。
<?xml version="1.0" encoding="us-ascii"?>
<configuration>
<!-- Configuration section-handler declaration area. -->
<configSections>
<sectionGroup name="system.web"
type="System.Web.Configuration.SystemWebSectionGroup, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<section
name="pages"
type="System.Web.Configuration.PagesSection, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
/>
<!-- Other <section /> elements. -->
</sectionGroup>
<!-- Other <sectionGroup /> and <section /> elements. -->
</configSections>
<!-- Configuration section settings area. -->
<pages
buffer="true"
enableSessionState="true"
asyncTimeout="45"
<!-- Other attributes. -->
>
<namespaces>
<add namespace="System" />
<add namespace="System.Collections" />
</namespaces>
</pages>
<!-- Other section settings elements. -->
</configuration>
編輯問題
由於組態區段中的項目必須為語式正確 (Well-Formed) 的 XML,所以項目和屬性 (Attribute) 都必須區分大小寫。編輯組態設定的方式有許多種。如需詳細資訊,請參閱編輯 ASP.NET 組態檔。
必須先以程式設計的方式建立自訂的組態區段處理常式,才能使用 ASP.NET 組態檔案中的自訂區段項目。如需詳細資訊,請參閱 HOW TO:使用 ConfigurationSection 建立自訂組態區段。
組態檔案中的路徑屬性
在參考 Web 應用程式路徑時,Web.config 檔案中的 path 屬性 (Attribute) 可以使用 "~/" 捷徑做為起始,表示應用程式根目錄。如需詳細資訊,請參閱 ASP.NET 網站路徑。
請參閱
工作
HOW TO:使用 ConfigurationSection 建立自訂組態區段
HOW TO:使用 IConfigurationSectionHandler 建立自訂組態區段