ASP.NET中的HttpWorkerRequest對像及其應用

HttpWorkerRequest對像在ASP.Net處理流程中的位置:程序員

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

首先被WWW服務器截獲(inetinfo.exe進程), 該進程首先判斷頁面後綴, 而後根據IIS中配置決定調用具體的擴展程序。api

如aspx就會調用aspnet_isapi.dll, 而後由aspnet_isapi.dll發送給w3wp.exe(iis 工做者進程,IIS6.0中叫作 w3wq.exe,IIS5.0中叫作 aspnet_wp.exe).瀏覽器

接下來就是w3wp.exe調用.net類庫進行具體處理,流程以下:服務器

ISAPIRuntime-->HttpRuntime-->HttpApplicationFactory-->HttpApplication-->HttpModule--HttpHandlerFactory-->HttpHandle框架

1. ISAPIRuntimeasp.net

主要做用是調用一些非託管代碼生成HttpWorkerRequest對象,HttpWorkerRequest對象包含當前請求的全部信息,而後 傳遞給HttpRuntime,這裏生成的HttpWorkerRequest對象能夠直接在咱們的頁面中調用的,經過它取得原始的請求信息:spa

2. HttpRuntime
a. 根據HttpWorkerRequest對象生成HttpContext,HttpContext包含request、response等屬性;
b. 調用HttpApplicationFactory來生成IHttpHandler(這裏生成的是一個默認的HttpApplication對象,HttpApplication也是IHttpHandler接口的一個實現)
c. 調用HttpApplication對象執行請求.net

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

相關文章
相關標籤/搜索