天天看點

IIS請求處理流程

IIS請求處理流程

一、IIS管道模型

1.1 IIS 6.0

IIS請求處理流程

1.2 IIS 7.0

二、管道事件

三、ASP.NET MVC請求到響應的基本流程

一、IIS管道模型

1.1 IIS 6.0

在IIS 6.0和早期版本中,ASP.NET被實作為IIS的ISAPI擴充。

對于ASP.NET内容類型的請求,會被轉發到承載ASP.NET請求管道和頁面架構的ASP.NET的 isapi.dll

對非ASP.NET内容(例如ASP頁或靜态檔案)的請求則由IIS或其他ISAPI擴充進行處理,并且對ASP.NET不可見

1.2 IIS 7.0

IIS 7.0 将ASP.NET管道與自身管道內建在一起,通過子產品化的方式進行組合和拓展

IIS請求處理流程

二、管道事件

在內建模式下,暴露給子產品的ASP.NET請求處理階段直接連接配接到IIS管道的相應階段。完整的管道包含以下階段,這些階段在ASP.NET中作為HttpApplication事件公開:

事件 描述

1.BeginRequest 請求處理開始

2.AuthenticateRequest 該請求已認證身份驗證。IIS和ASP.NET身份驗證子產品訂閱此階段以執行身份驗證

3.PostAuthenticateRequest

4.AuthorizeRequest 該請求被授權。IIS和ASP.NET授權子產品檢查經過身份驗證的使用者是否有權通路所請求的資源

5.PostAuthorizeRequest

6.ResolveRequestCache 高速緩存子產品檢查對此請求的響應是否存在于高速緩存中,然後将其傳回,而不是繼續執行其餘的執行路徑。ASP.NET輸出緩存和IIS輸出緩存功能均執行

7.PostResolveRequestCache

8.MapRequestHandler 此階段在ASP.NET中是内部的,用于确定請求處理程式

9.PostMapRequestHandler

10.AcquireRequestState 檢索執行請求所需的狀态。ASP.NET會話狀态和配置檔案子產品擷取其資料

11.PostAcquireRequestState

12.PreExecuteRequestHandler 執行處理程式之前的所有任務

13.ExecuteRequestHandler 請求處理程式執行。提供ASPX頁,ASP頁,CGI程式和靜态檔案

14.PostExecuteRequestHandler

15.ReleaseRequestState 請求狀态更改已儲存,并在此處清除狀态。ASP.NET會話狀态和配置檔案子產品使用此階段進行清理

16.PostReleaseRequestState

17.UpdateRequestCache 響應存儲在緩存中以備将來使用。執行ASP.NET輸出緩存和IIS輸出緩存子產品以将響應儲存到其緩存中

18.PostUpdateRequestCache

19.LogRequest 此階段記錄請求的結果,并確定即使發生錯誤也可以執行

20.PostLogRequest

21.EndRequest 此階段執行所有最終請求清除,并確定即使發生錯誤也可以執行

三、ASP.NET MVC請求到響應的基本流程

IIS請求處理流程