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

ASP.NET 應用程式生命週期深度解析(二):IIS 請求路由與 ISAPI 機制

     編輯:關於ASP.NET

本文續接第一篇,深入探討 IIS 如何識別 .aspx 請求並將其移交給 ASP.NET 執行環境,揭開 ISAPI 擴展與應用程式對應的關鍵角色。

三大核心問題

  1. IIS 無實體眼睛,如何「看」請求副檔名?
  2. 識別為 .aspx 後,如何交給 ASP.NET?若不處理,IIS 存在意義何在?
  3. ASP.NET 接收請求後,如何建立 Context、Request、Response 並「僱用」HttpApplication?

ISAPI:IIS 的眼睛與路由器

ISAPI (Internet Server Application Programming Interface) 是 IIS 的原生擴展介面。當請求進入 IIS,ISAPI 依副檔名查詢應用程式對應表,決定交由哪個 ISAPI DLL 處理。對 .aspx 而言,對應的是 aspnet_isapi.dll (ASP.NET ISAPI 擴展)。

可在 IIS 站點屬性 → 主目錄 → 配置 中查看應用程式對應:

IIS 應用程式對應設定

請求流程詳解

  1. 使用者點擊連結,瀏覽器發送 HTTP 請求至 IIS。
  2. IIS 接收請求,ISAPI 解析副檔名(如 .aspx)。
  3. 查詢應用程式對應表,找到 aspnet_isapi.dll。
  4. ISAPI 將請求封裝為 ECB (Extension Control Block),呼叫 ASP.NET ISAPI 擴展的 HttpExtensionProc。
  5. ASP.NET 執行環境啟動,建立 HttpContext、HttpRequest、HttpResponse 物件。
  6. 從應用程式域的 HttpApplicationFactory 取得或建立 HttpApplication 實例處理請求。

關鍵點總結

  • IIS 只負責接收網路封包與靜態檔案服務,動態處理委派給 ISAPI 擴展。
  • ISAPI 擴展是非託管程式碼,負責橋接 IIS 與 CLR 執行環境。
  • ASP.NET ISAPI (aspnet_isapi.dll) 是進入 managed 世界的大門,後續由 CLR 接管執行。

下一篇將詳細說明 ASP.NET 內部如何建立 Context、Request、Response 並啟動 HttpApplication 處理管線。

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