ASP.NET 組態 API 概觀
更新:2007 年 11 月
ASP.NET 組態 API 可以讓您使用單一程式設計介面,開發、部署和管理應用程式組態資料。您可以藉由程式設計方式,使用組態 API 開發和修改完整的 ASP.NET 組態,而不需要在組態檔中直接編輯 XML。此外,您也可以在自行開發的主控台應用程式和指令碼、Web 架構管理工具,以及 Microsoft 管理主控台 (MMC) 嵌入式管理單元中使用組態 API。下列兩種組態管理工具會使用 .NET Framework 2.0 版包含的組態 API:
ASP.NET MMC 嵌入式管理單元會使用組態 API 簡化系統管理工作,從組態階層架構的所有層級,提供本機組態資料的整合式檢視。
網站管理工具可以讓您管理本機和遠端應用程式的組態設定,其中包含裝載站台。
ASP.NET 組態 API 有別於網際網路資訊服務 (IIS) 程式設計組態 API。如需詳細資訊,請參閱使用 IIS 程式設計管理。
組態 API 功能
ASP.NET 組態 API 是由一組 ASP.NET 管理物件所組成,您可以使用這些物件以程式設計方式設定網站和應用程式。管理物件會實作為 .NET Framework 類別庫。組態 API 程式設計模型會在編譯時期強制套用資料型別,協助確保程式碼的一致性和可靠性。
為了輕鬆管理應用程式組態,組態 API 可以讓您以單一集合的方式,檢視從組態階層架構各處合併的資料,而不是從不同的組態檔以個別集合的方式檢視資料。此外,組態 API 也能夠讓您管理整個應用程式組態,而不需要直接編輯組態檔中的 XML。最後,API 藉由支援管理工具以簡化組態工作,例如網站管理工具。
組態 API 支援在一部電腦上建立組態檔,然後在多部電腦上執行組態指令碼以簡化部署工作。
組態 API 不支援建立 IIS 應用程式。如需撰寫 IIS 管理應用程式的詳細資訊,請參閱 IIS SDK 中的使用 System.DirectoryServices 設定 IIS。
使用本機和遠端組態設定
Configuration 物件代表套用至特定實際實體 (例如電腦) 或是邏輯實體 (例如應用程式或網站) 的組態設定合併檢視。指定之邏輯實體可以位於本機電腦或遠端伺服器上。
當指定之實體的組態檔不存在時,Configuration 物件代表 Machine.config 檔定義的預設組態設定。
您可以使用下列類別的其中一個開放組態方法取得 Configuration 物件:
ConfigurationManager 類別,如果實體是用戶端應用程式。
WebConfigurationManager 類別,如果實體是 Web 應用程式。
這些方法會傳回 Configuration 物件,而這個物件就會提供處理基礎組態檔的必要方法和屬性。您可以存取這些檔案以便讀取或寫入。
讀取:使用 GetSection 或 GetSectionGroup 方法讀取組態資訊。讀取的使用者或處理序必須要有階層架構中所有組態檔的「讀取」權限。
注意事項: 如果使用取得 path 參數的靜態 GetSection 方法,path 參數必須參考執行程式碼的應用程式。否則,就會忽略參數並傳回目前執行應用程式的組態資訊。
寫入:使用其中一個 Save 方法寫入組態資訊。寫入的使用者或處理序必須要有組態檔和目前組態階層架構目錄的「寫入」權限,以及階層架構中所有組態檔的「讀取」權限。
若要產生代表指定之實體的繼承組態設定,請使用下列其中一個儲存組態方法:
注意事項: |
---|
若要能夠存取遠端電腦上的組態設定,請使用 Aspnet_regiis 命令列工具。如需這個工具的詳細資訊,請參閱 ASP.NET IIS 註冊工具 (Aspnet_regiis.exe)。如需建立和存取自訂組態設定而不是 .NET Framework 包含之內建區段的詳細資訊,請參閱 ConfigurationSection。 |
程式碼範例
您可以在 ASP.NET Web 網頁中使用下列程式碼,取得 ASP.NET Web 網頁所執行之應用程式的組態資訊。這個程式碼範例會使用靜態 WebConfigurationManager.GetSection 方法。
System.Web.Configuration.UrlMappingsSection urlMaps =
(System.Web.Configuration.UrlMappingsSection)
System.Web.Configuration.WebConfigurationManager.GetSection(
"system.web/urlMappings");
Bool urlMappingsEnabled = urlMaps.IsEnabled;
您可以從 ASP.NET 應用程式或用戶端應用程式使用下列程式碼,以取得不同應用程式的組態資訊。這個程式碼範例會使用 System.Configuration.Configuration 物件的非靜態 GetSection 方法。
System.Configuration.Configuration config =
System.Web.Configuration.WebConfigurationManager.OpenWebConfiguration(
"/SampleWebApp");
System.Web.Configuration.UrlMappingsSection urlMaps =
(System.Web.Configuration.UrlMappingsSection)
System.Web.Configuration.WebConfigurationManager.GetSection(
"system.web/urlMappings");
bool urlMappingsEnabled = urlMaps.IsEnabled;
組態類別和命名空間
許多組態類別和方法彼此間都很類似。下表描述最常用的組態類別和命名空間。如需使用這些類別和命名空間的使用方式案例和程式碼範例詳細資訊,請參閱使用組態類別。
組態類別或命名空間 |
描述 |
---|---|
System.Configuration 命名空間 |
包含所有 .NET Framework 應用程式的主要組態類別。其中包含在.NET Framework 的組態檔結構描述中定義之 .NET Framework 用戶端組態區段的區段處理常式類別。區段處理常式類別會用來從方法 (例如 GetSection 和 GetSectionGroup) 中取得區段的組態資料。這兩個方法是非靜態的。如需詳細資訊,請參閱本主題中稍早提及的使用靜態與非靜態方法一節。 ASP.NET 區段處理常式類別包含在 System.Web.Configuration 命名空間中。 |
代表電腦、應用程式、Web 目錄或其他資源的一組組態資料。Configuration 類別的執行個體會對應至階層架構中所包含的合併組態設定。 這個類別包含有用的方法,例如 GetSection 和 GetSectionGroup,以便更新組態設定和取得區段與區段群組的參考。這兩個方法是非靜態的。如需詳細資訊,請參閱本主題中稍早提及的使用靜態與非靜態方法一節。 這個類別是用來當做取得設計階段組態資料之方法的傳回型別,例如 WebConfigurationManager 和 ConfigurationManager 類別的方法。 |
|
包含在 ASP.NET 組態設定中定義之 ASP.NET 組態區段的區段處理常式類別。區段處理常式類別會用來從方法 (例如 GetSection 和 GetSectionGroup) 中取得區段的組態資料。這兩個方法是靜態的。如需詳細資訊,請參閱本主題中稍早提及的使用靜態與非靜態方法一節。 |
|
提供有用的方法以取得執行階段和設計階段組態設定參考。這些方法會使用 System.Configuration.Configuration 類別當做傳回型別。您可以交替地使用這個類別的靜態 GetSection 方法,或是 System.Configuration.ConfigurationManager 類別的非靜態 GetSection 方法。如需詳細資訊,請參閱本主題中稍早提及的使用靜態與非靜態方法一節。 針對 Web 應用程式組態,建議使用 System.Web.Configuration.WebConfigurationManager 類別而不是 System.Configuration.ConfigurationManager 類別。 |
|
提供自訂和擴充組態提供者的方法。這是組態系統中所有提供者類別的基底類別。 |
|
包含可以管理及監視 Web 應用程式健康狀況的類別和介面。嚴格來說,這個命名空間並不算是組態 API 的一部分。例如,追蹤和事件引發是由這個命名空間中的類別所完成。如需詳細資訊,請參閱 ASP.NET 疑難排解與偵錯。 |
|
提供檢測應用程式的必要類別,並透過 Windows Management Instrumentation (WMI) 將其管理資訊和事件公開 (Expose) 給可能的客戶。ASP.NET 健康監視會使用 WMI 傳遞事件。嚴格來說,這個命名空間並不算是組態 API 的一部分。 |
組態類別繼承結構
下列圖表說明 System.Web.Configuration 命名空間的類別以及 System.Configuration 命名空間的類別之間的繼承關聯性 (Relationship)。您可以使用這個圖表了解目前已具現化的物件可使用的屬性和方法,以及如何取得詳細資訊。
組態類別彙總結構
下列圖表說明 System.Web.Configuration 命名空間的類別以及 System.Configuration 命名空間的類別之間的彙總 (Aggregation) 關係。您可以使用這個圖表了解在其他類別中具現化為物件的類別。
建置特定工具
您可能需要讓許多系統管理員管理指派的資源 (例如特定網站和應用程式),併同時限制這些系統管理員對其他資源所能進行的動作。您可以開發使用 ASP.NET 組態 API 的管理工具,只對系統管理員公開工作上需要的這些組態設定,並同時拒絕他們存取其他設定。這樣一方面可以授權系統管理員,另一方面又可以免除直接存取組態檔的情況,有助於保護資源。
多個伺服器的工具
如果您管理許多伺服器,可能需要在每個伺服器上部署和管理相同的 ASP.NET 應用程式。例如,管理 Web 伺服陣列將會執行下列工作:
撰寫指令碼以便設定 Web 伺服陣列中任何或所有伺服器的相同 ASP.NET 應用程式。
鎖定應用程式之每個執行個體使用的某些檔案。
自動進行稽核以記錄已部署應用程式的組態,確保以相同方式設定每個電腦上的安裝。
在組態中編輯變更一次,然後將變更套用至應用程式的所有執行個體 (無論安裝在何處)。
此外,ASP.NET 組態 API 也支援跨多個伺服器的批次執行。
使用一項工具建立和管理組態
身為網站所有者,您可以使用 ASP.NET MMC 嵌入式管理單元建立和管理電腦上 ASP.NET 應用程式的組態。ASP.NET MMC 嵌入式管理單元會經由圖形化使用者介面公開 ASP.NET 組態 API 的功能。ASP.NET MMC 嵌入式管理單元提供多個組態檔案之組態設定的統一檢視,例如工作階段、安全性、錯誤和追蹤。您可以變更設定,而不必直接編輯組態檔中的 XML。如需詳細資訊,請參閱 ASP.NET 的 MMC 嵌入式管理單元。
請參閱
工作
HOW TO:從 Web.config 檔案讀取應用程式設定