首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> ASP.NET 基礎 >> ASP.NET 基礎

IIS 7 處理 ASP.NET 請求流程圖解:從 HTTP.sys 到托管管道

     編輯:ASP.NET 基礎

前言

IIS 7 引入 WAS (Windows Process Activation Service) 和集成管道模式,請求處理流程與 IIS 6 截然不同。本文通過 8 步驟流程圖、經典 vs 集成模式架構對比、W3WP 進程內部處理邏輯,完整還原請求從網卡到托管代碼的全鏈路。

一、IIS 7 請求處理 8 步驟 (啟動階段 + 處理階段)

步驟 1-6:應用啟動 (首次請求/應用池啟動時)
步驟 7-8:常規請求處理 (後續請求直接進入)
步驟組件動作
1HTTP.sys (內核)攔截客戶端 HTTP 請求,放入內核隊列
2HTTP.sys → WAS通知 WAS 有新請求,WAS 讀取配置存儲
3WAS從 `applicationHost.config` 讀取站點/應用程序池配置
4WWW 服務 (W3SVC)根據配置設置 HTTP.sys 處理策略 (隊列綁定、限流等)
5WWW 服務配置 HTTP.sys 路由規則
6WAS啟動對應應用程序池的 Worker Process (w3wp.exe)
7w3wp.exe處理請求並返回響應給 HTTP.sys
8HTTP.sys → 客戶端發送響應數據

二、W3WP 進程內部:兩種托管管道模式

1. 經典模式 - IIS 6 兼容架構

請求 → HTTP.sys → w3wp.exe 
      → 加載 aspnet_isapi.dll (ISAPI Extension)
      → ISAPI 創建 HttpRuntime → HttpApplication → 托管管道
      → 處理 .aspx/.asmx 等映射擴展名
      → 其他靜態文件由 IIS 原生模塊處理

特點:ASP.NET 作為 ISAPI 外掛,**僅處理映射擴展名**,靜態文件、ASP、PHP 走 IIS 原生路徑,**兩套管道並行**,認證/授權/緩存重複實現。

2. 集成模式 - IIS 7+ 核心架構 (推薦)

請求 → HTTP.sys → w3wp.exe
      → 直接進入托管管道 (無 ISAPI 跳轉)
      → HttpRuntime → HttpApplication → 統一 HTTP 管道
      → 所有請求 (靜態/動態/ASP/PHP) 統一經過托管模塊
      → 模塊:StaticFileModule、FormsAuthentication、Session、OutputCache、UrlRewrite...

特點:ASP.NET 模塊成為 IIS 管道**有機組成部分**,**單一管道**處理所有請求,托管代碼可攔截靜態文件、ASP、PHP 請求,實現統一認證、URL 重寫、輸出緩存。

三、架構對比圖解

經典模式

[IIS 原生管道] ←→ [ISAPI: aspnet_isapi.dll] ←→ [ASP.NET 管道]
   靜態文件              .aspx/.ashx              Page/Handler
   ASP/PHP                                        Module/Handler

集成模式

[統一 IIS 管道] → [托管模塊: StaticFile, Auth, Session, Cache, Custom...]
                    → [Handler: Page, MvcHandler, WebApi, StaticFile...]
所有請求統一流經,模塊順序由 system.webServer/modules 定義

四、關鍵差異總結

維度經典模式集成模式
管道數量雙管道 (IIS + ASP.NET)單管道 (統一)
ASP.NET 角色ISAPI Extension (外掛)原生模塊 (內建)
靜態文件處理僅 IIS 原生模塊經過托管模塊 (可攔截)
認證/授權雙重配置統一托管模塊
web.config 節點`` httpModules/handlers`` modules/handlers
性能ISAPI 切換開銷零切換、管道融合
兼容性舊應用零修改需遷移配置節點

五、web.config 遷移關鍵點 (經典 → 集成)




  
    
  
  
    
  




  
    
  
  
    
  

遷移工具:`%windir%\system32\inetsrv\appcmd.exe migrate config "站點名/"`

總結

IIS 7 重構請求處理核心:WAS 管理進程、HTTP.sys 內核路由、集成管道融合托管與原生模塊。**集成模式是現代標準**,提供統一攔截、更高性能、更簡潔配置。遷移舊應用時,重點遷移 `` → `` 模塊與處理程序配置,利用 `appcmd migrate config` 自動化轉換。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved