1. 程式人生 > >ASPX執行流程簡介

ASPX執行流程簡介

每一個ASP.NET程式執行時都會對當前URL的請求進行解析,本文將分析ASP.NET頁面請求的原理。當我們在瀏覽器上輸入一個URL時, 流程如下:

首先被WWW伺服器截獲(inetinfo.exe程序), 該程序首先判斷頁面字尾, 然後根據IIS中配置決定呼叫具體的擴充套件程式。

如aspx就會呼叫aspnet_isapi.dll, 然後由aspnet_isapi.dll傳送給w3wp.exe(iis 工作者程序,IIS6.0中叫做 w3wq.exe,IIS5.0中叫做 aspnet_wp.exe).

ISAPIRuntime–>HttpRuntime–>HttpApplicationFactory–>HttpApplication–>HttpModule–HttpHandlerFactory–>HttpHandle

1. ISAPIRuntime

主要作用是呼叫一些非託管程式碼生成HttpWorkerRequest物件,HttpWorkerRequest物件包含當前請求的所有資訊,然後傳遞給HttpRuntime,這裡生成的HttpWorkerRequest物件可以直接在我們的頁面中呼叫的,通過它取得原始的請求資訊:

2. HttpRuntime
a. 根據HttpWorkerRequest物件生成HttpContext,HttpContext包含request、response等屬性;
b. 呼叫HttpApplicationFactory來生成IHttpHandler(這裡生成的是一個預設的HttpApplication物件,HttpApplication也是IHttpHandler介面的一個實現)
c. 呼叫HttpApplication物件執行請求

3. HttpApplicationFactory.

主要是生成一個HttpApplication物件:

首先會檢視是否存在global.asax檔案,如果有的話就用它來生成HttpApplication物件,從這裡我們可以看到global.asax的檔名是在asp.net的框架中寫死的,不能修改的。如果這個檔案不存在就使用預設的物件。

4. HttpApplication

這個是比較複雜也比較重要的一個物件, 首先是執行初始化操作,比較重要的一步就是進行HttpModule的初始化:

HttpApplication代表著程式設計師建立的Web應用程式。HttpApplication建立針對此Http請求的 HttpContext物件,這些物件包含了關於此請求的諸多其他物件,主要是HttpRequest、HttpResponse、 HttpSessionState等。這些物件在程式中可以通過Page類或者Context類進行訪問。

它會讀取web.config中所有HttpModule的配置

5. HttpModule

6. HttpHandlerFactory

7. HttpHandler