IIS 7 中的組態系統
概觀
IIS 7 引進全新的組態系統,這是所有新的系統管理相關功能的核心。 組態系統是以分散式、純文字、XML 檔案為基礎,這些檔案會保存整個網頁伺服器平臺的組態設定,包括 IIS、ASP.NET 和其他元件,例如 FTP 7.5;如果針對該層級解除鎖定,他們可以選擇性地在內容目錄與 Web 內容一起設定。 請注意,FTP 6.0 組態設定會儲存在 MetaBase 中。
不同的組態階層層級可由電腦系統管理員委派給其他使用者,例如月臺擁有者或應用程式開發人員。 保護預設和現成鎖定限制僅對電腦系統管理員的組態設定的寫入權限, (例外狀況是一些網站特定設定,例如 DefaultDocument) ;不過,針對 Web 命名空間的範圍,複雜且細微的鎖定功能可安全地解除鎖定及委派管理特定組態設定給更多使用者。 在) 安裝 MetaBase 相容性層之後,系統會在 API 層級與舊版 IIS (回相容。
在根 (或全域) 層級,有兩個不同的檔案:
- system32\inetsrv\config\applicationHost.config:保留網頁伺服器 (IIS) 設定的全域預設值。
- \Windows\Microsoft.NET\Framework\v4.0.30319\Config\machine.config:保留 .NET Framework 設定的全域預設值,包括部分 ASP.NET 設定, (其餘設定位於相同資料夾中的web.config,有時稱為根web.config) 。
仍有兩個不同的檔案的原因是兩種技術版本會以不同方式 (排程和產品) 。 IIS 是 Windows 的一部分,.NET Framework 可以獨立版本。
在 Web 內容目錄中,可能會有選擇性web.config檔案控制階層層級和向下的行為。 如果內容目錄位於 UNC 共用上,它們可能是本機或遠端 (,例如) 。 它們可能包含 IIS、ASP.NET 或任何其他可在其層級指定的 .NET Framework 組態設定。 根據預設,沒有web.config檔案。
階層
就繼承階層而言,根檔案是machine.config,然後web.config位於相同目錄 (稱為根web.config) ,然後applicationHost.config,然後沿著命名空間的選擇性web.config檔案,如下圖所示。
區段
在組態檔中,設定會以結構化方式組織,以稱為「區段」的單位為基礎。 組態區段是一組邏輯相關的設定,可以整體部署,或從整個系統取消註冊,而且通常會由一個伺服器模組取用。
換句話說,幾乎所有在背景工作進程中執行的執行時間模組都有對應的組態區段。 組態區段也是擴充性的單位:將新的設定新增至組態架構,是藉由擴充現有區段或在其中新增一或多個區段來完成。
這些區段會進一步分組成邏輯相關的集合,稱為「區段群組」。 區段群組不是部署單位或註冊,或任何其他重大作業 (例如鎖定、加密) 。 它們中沒有設定。 其目的是進一步建構設定的組織,並避免設定區段很長的一般清單。 它們用來建置設定階層,因此它們之間的關聯性 (父/子系) 。
換句話說,區段群組可以是巢狀的。 指定的區段一律只屬於一個區段群組,而且不能包含其他區段 (或區段群組) 。 指定的區段群組可能屬於父區段群組,而且可能包含零個或多個子區段群組。 它通常包含一個以上的區段;否則,第一個位置 (沒有好的理由,客戶可以建立只有一個區段的區段群組來擴充架構,因為任何原因) 。
以下是示範區段和區段群組的範例:
<!-- section group for web server configuration -->
<system.webServer>
<!-- section group for web server security configuration -->
<security>
<!-- section group for web server authentication configuration -->
<authentication>
<!-- three sections for authentication -->
<basicAuthentication ... />
<windowsAutnentication ... />
<anonymousAuthentication ... />
</authentication>
</security>
</system.webServer>
每個區段都有名稱。 簡短名稱是區段本身的名稱,長名稱是包含所有包含區段群組的完整名稱。 例如,「windowsAuthentication」 的完整名稱是 「system.webServer/security/authentication/windowsAuthentication」。 此階層式組織允許未來區段 (和區段群組) 具有相同名稱,但在不同的區段群組下。
URL 命名空間的每個層級可能都有相關聯的組態。 除非子層級特別覆寫,否則指定層級的組態會繼承至子層級。 在對應至虛擬路徑的實體檔系統資料夾中,使用web.config檔案來達成每個 URL 設定的簡單方式。 在根層級 (電腦層級) ,應該使用個別的檔案,視稍後將在檔中定義的組態區段群組 (而定;針對目前用途,請將它視為包含組態) 的 XML 專案名稱:
區段群組 | 描述 | 根目錄檔案 |
---|---|---|
system.applicationHost | Windows 啟用系統:進程模型 | System32\inetsrv\config\applicationHost.config |
system.webServer | IIS:網頁伺服器 | System32\inetsrv\config\applicationHost.config |
system.web | ASP.NET | Windows\microsoft.net\framework\v2.0.50727\config\web.config |
系統。* | 其他 .NET Framework | Windows\microsoft.net\framework\v2.0.50727\config\machine.config |
[Microsoft other] | Microsoft 其他 | Windows\microsoft.net\framework\v2.0.50727\config\machine.config |
[custom] | 第三方 | machine.config或根web.config或applicationHost.config,最多協力廠商/客戶 |
組態的持續性格式為 XML;因此,描述組態組織單位與 XML 術語之間的對應很有用。 區段群組和區段是 XML 元素。 在區段中,設定會組織成更小型的單位,以密切遵循 XML 術語:
組態單位 | XML 術語 | 描述 |
---|---|---|
設定元素 | XML 元素 | 包含其他子單位;沒有值。 |
組態集合 | XML 元素 | 元素的私人案例:包含一組元素,格式為 add/remove/clear。 |
Configuration 屬性 | XML 屬性 | 只包含值;不包含子單位。 |
組態系統是由宣告式架構所驅動,其核心為 。 組態架構跨越多個位於已知位置的檔案:system32\inetsrv\config\schema。 根據預設,只有電腦系統管理員才能存取此資料夾。 客戶或協力廠商可以將自訂區段的架構檔案複製到該目錄,以新增其自訂區段的架構檔案。 組態系統會在啟動時,在設定的呼叫端程式中自動挑選它們。 如果組態系統已在執行中,它將不會挑選架構檔案或新檔案的變更。
請勿編輯安裝到此目錄中的 IIS 或其他架構檔案,因為錯誤可能會導致伺服器啟動損毀的架構和無法啟動。
注意
沒有高階程式設計介面可取得和設定架構檔案,而傳統檔案存取 API 和 XML 剖析/編輯的簡短。 在對架構資料夾進行任何變更之前,一律建議先備份敏感性狀態。
三個檔案組成 Web 服務器平臺的統一架構:
- IIS_schema.xml:涵蓋 Windows 啟用系統和 IIS 網頁伺服器設定和區段群組。
- ASPNET_schema.xml:涵蓋區段群組中的 ASP.NET 設定。
- FX_schema.xml:涵蓋各種區段群組中的其他 .NET Framework 設定。
如果您已安裝 IIS 7 FTP 功能,您也會發現FTP_schema.xml。