ASP.NET 與 IIS 的整合方式隨版本演進有顯著差異。理解這些差異對架構決策、效能調優與疑難排解至關重要。
aspnet_isapi.dll 直接寄宿於 inetinfo.exe 進程。若設定中/高隔離等級,則寄宿於獨立工作進程。首個 ASP.NET 請求到達時,ISAPI DLL 啟動 aspnet_wp.exe 並透過命名管道 路由請求。此進程加載並寄宿 .NET 執行階段。
IIS 6 引入應用程式池,徹底改變處理模型:
machine.config 中難以管理的全域 ProcessModel 設定被應用程式池設定取代HTTP.SYS 核心驅動通訊,繞過 inetinfo,大幅提升穩定與效能IIS 7 引入整合模式,ASP.NET 管線與 IIS 核心管線深度融合:
| 特性 | IIS 5 | IIS 6 | IIS 7 |
|---|---|---|---|
| 工作進程 | aspnet_wp.exe | w3wp.exe (應用程式池) | w3wp.exe (應用程式池) |
| 隔離層級 | AppDomain | Process | Process + 整合管線 |
| 通訊機制 | 命名管道 | 進程內 + HTTP.SYS | 整合管線原生 |
| 設定管理 | machine.config ProcessModel | 應用程式池設定 | applicationHost.config + web.config |
掌握演進脈絡,才能在遷移、升級與架構設計中做出最佳決策。