本系列整理自 2012 年閱讀 MVC 3 原始碼,涵蓋從 HTTP 請求進入 MVC Handler 前的完整流程。本文講解伺服器接收請求後如何進入 .NET CLR。
IIS 5 核心進程為 InetInfo.exe,所有請求(ASPX/HTML)均由其處理。ASPX 對應 aspnet_isapi.dll,該 DLL 建立 aspnet_wp Worker Process 並載入 CLR,形成託管環境。特點:
aspnet_wp 處理所有應用程式,但透過 AppDomain 隔離(每站點/虛擬目錄一個),擁有獨立 Context,安全無虞。aspnet_isapi 監控 Worker Process 效能,低於閾值則回收重建。IIS 6 採用 w3wp.exe Worker Process,架構更模組化:http.sys(核心模式)接收請求 → 依 URL 導向應用程式集區 → 集區佇列 → 對應 w3wp.exe → 載入 aspnet_isapi.dll → 載入 CLR → 建立 AppDomain → ISAPIRuntime.ProcessRequest 進入管線。關鍵元件:
IIS 7 整合模式進一步將 ASP.NET 管線融入 IIS 核心,但核心概念延續。理解這些底層機制,有助於深入掌握 ASP.NET 請求處理全貌。