IIS 6.0 (Windows Server 2003) 引入全新的 Worker Process Isolation Architecture (WPIA),並大幅擴充 ASP 功能集,原生整合 COM+ 企業級服務 (交易、物件池、並存組件、分區、追蹤)。本文系統梳理國際化增強、POST 改進、掛起偵測、磁碟快取、UNC 支援、COM+ 服務整合 (MTA/SxS/分區/追蹤/交易) 及新增 Metabase 屬性,為遷移與架構決策提供技術參考。
AspExecuteInMTA = true 切換至 Multiple-Threaded Apartment (MTA),針對自由執行緒 / 雙執行緒 COM 元件大幅提升效能 (預設 STA 相容單執行緒元件)。切換前必須停用應用程式並卸載,避免模擬權杖失效導致權限提升風險。| 功能 | 說明 | 關鍵 Metabase 屬性 |
|---|---|---|
| 全面 UTF-8 支援 | 擴展至所有內建物件屬性/方法 (Request, Response, Session, Application, Server),不再限於 Response.Write | AspCodePage = 65001 |
| Chunked POST 支援 | 可讀取 HTTP 1.1 Chunked Transfer Encoding 請求主體 | 無需設定,自動處理 |
| ASP 掛起偵測 | WWW 服務監控執行緒健康,掛起觸發進程回收並寫入事件日誌 (HSE_REQ_REPORT_UNHEALTHY) | AspHangMonitorPeriod, AspHangMonitorThreshold |
| 磁碟編譯快取 | 除記憶體快取外,將熱門編譯範本持久化至磁碟,重啟後加速首次請求 | AspDiskTemplateCacheDirectory (預設 %SystemRoot%\System32\Inetsrv\ASP Compiled Templates), AspMaxDiskTemplateCacheFiles |
| UNC 路徑原生支援 | ASP 腳本可直接使用 \\Server\Share\file.asp 路徑,無需對應磁碟機代號 | 無需設定 |
| Session ID 安全傳輸 | Cookie 標記 Secure 僅 HTTPS 傳輸 | AspKeepSessionIDSecure = true |
| 請求實體大小限制 | 防禦大型 POST 攻擊 | AspMaxRequestEntityAllowed (預設 200KB) |
| 緩衝區限制 | 控制 Response.Buffer 輸出上限 | AspBufferingLimit (預設 4MB) |
| 匿名執行 Global.asa 事件 | Application_OnEnd / Session_OnEnd 以匿名身分執行 | AspRunOnEndAnonymously = true |
AspEnableSxs = true + AspSxsName = "ManifestName" (對應虛擬目錄下 ManifestName.manifest XML 檔)。資訊清單範例:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity name="MyApp" version="1.0.0.0" processorArchitecture="x86" />
<file name="MSXML2.DLL">
<comClass clsid="{F5078F18-C551-11D3-9B1B-00C04F79FAA6}" progid="MSXML2.DOMDocument.2.6" threadingModel="apartment" />
</file>
</assembly>
AspUsePartition = true + AspPartitionID = "{GUID}" (透過「元件服務」建立)。AspEnableTracker = true (自動置位 AspAppServiceFlags)。comtrace.exe 分析。<% @TRANSACTION = Required %> + ObjectContext.SetComplete() / SetAbort()。| 屬性名稱 | 功能 | 預設值 |
|---|---|---|
AspAppServiceFlags | 位元旗標啟用 SxS/分區/追蹤等 COM+ 服務 | 0 |
AspDiskTemplateCacheDirectory | 磁碟編譯快取目錄 | %SystemRoot%\System32\Inetsrv\ASP Compiled Templates |
AspExecuteInMTA | ASP 執行緒於 MTA 執行 | False (STA) |
AspKeepSessionIDSecure | Session Cookie 僅 HTTPS 傳輸 | False |
AspMaxDiskTemplateCacheFiles | 最大磁碟快取檔案數 | 無限制 |
AspPartitionID | COM+ 分區 GUID | 系統預設分區 |
AspRunOnEndAnonymously | Global.asa 結束事件匿名執行 | False |
AspBufferingLimit | Response 緩衝區上限 (位元組) | 4,194,304 (4MB) |
AspMaxRequestEntityAllowed | 最大請求實體大小 (位元組) | 204,800 (200KB) |
AspSxsName | SxS 資訊清單檔名 (不含 .manifest) | 空 |
AspDiskTemplateCacheDirectory 指向非系統碟高效能儲存,AspMaxDiskTemplateCacheFiles 設定合理上限 (如 5000)。@TRANSACTION + ObjectContext,棄用手工 COM 包裝。IIS 6.0 將 ASP 從簡單腳本宿主昇級為擁有企業級中介軟體能力 (交易、隔離、版本控制、診斷) 的應用伺服器。善用 Metabase 微調與 COM+ 整合,可在不重寫代碼前提下,為舊版 ASP 資產注入現代化架構韌性。