在我的上一篇文章中說到了HttpModule、HttpHandle的簡單使用,我們可以利用它們在頁面請求的過程中加入自己的事件處理程序。那么在一個aspx頁面請求時后臺到底做了什么?當然asp.net做了很多事情,過程也比較復雜,本文主要分析一下大體的流程。總體流程如下:
請求一個頁面時首先被WWW服務截獲(inetinfo.exe進程),這個進程首先判斷頁面的后綴,然后根據IIS中的配置來決定調用哪個擴展程序,比如aspx的頁面就會調用c:\windows\microsoft.net\framework\v2.0.50727\aspnet_isapi.dll,aspneface="Verdana">t_isapi.dll將請求發送給w3wp.exe進程(我們在調試IIS中網站時就是把VS2005附加到這個進程上的)。接下來w3wp.exe進程就會調用.net類庫進行具體處理:ISAPIRuntime-->HttpRuntime-->HttpApplicationFactory-->HttpApplication-->HttpModule--HttpHandlerFactory-->HttpHandler 這也是本文主要分析的地方。 下面只是列出主要流程,如果喜歡鉆研的同學可以用Reflector去查看一下:
以下為引用的內容: ISAPIRuntime |
它的主要作用是調用一些非托管代碼生成HttpWorkerRequest對象,該對象包含當前請求的所有信息,然后傳遞給HttpRuntime,這里生成的HttpWorkerRequest對象可以直接在我們的頁面中調用的,通過它取得原始的請求信息:
以下為引用的內容:
IServiceProvider provider = |