理解 WCF 在 IIS 中的行為,必須先懂 IIS 與 ASP.NET 管道如何演進。本文詳細追溯 IIS 5.x/6/7 的架構變遷、ASP.NET 管道核心組件 (HttpApplication、HttpModule、HttpHandler) 運作機制,為後續 WCF 寄宿分析奠基。
inetinfo.exe 載入 aspnet_isapi.dll (ISAPI Extension)。aspnet_wp.exe。HttpRuntime 驅動管道。svchost.exe,從 Metabase 讀取配置、管理應用程式池。w3wp.exe 工作進程,進程級隔離。aspnet_isapi.dll) 直接載入工作進程,消除跨進程開銷。BeginRequest → AuthenticateRequest → AuthorizeRequest → ResolveRequestCache → MapRequestHandler → AcquireRequestState → PreRequestHandlerExecute → [HttpHandler.ProcessRequest] → PostRequestHandlerExecute → ReleaseRequestState → UpdateRequestCache → LogRequest → EndRequest。global.asax 以 Application_{EventName} 命名慣例掛接事件。IHttpModule.Init(HttpApplication) 註冊事件。SessionStateModule、FormsAuthenticationModule、UrlAuthorizationModule、OutputCacheModule 等。System.ServiceModel.Activation.HttpModule (並行模式寄宿核心)。IHttpHandler.ProcessRequest(HttpContext)。.aspx → PageHandlerFactory、.asmx → WebServiceHandlerFactory、.svc → HttpHandler (WCF)。IHttpHandlerFactory 動態建立。HttpModule) 直接註冊到 IIS 原生管道,統一處理所有請求 (含靜態檔)。從 ISAPI 橋接到整合管道,IIS 與 ASP.NET 從「井水不犯河水」走向「你中有我」。WCF 寄宿模式的選擇 (並行 vs 相容),本質上就是選擇在哪個層級接管請求。