中文字幕精品亚洲无线码二区,国产黄a三级三级三级看三级,亚洲七七久久桃花影院,丰满少妇被猛烈进入,国产小视频在线观看网站

開(kai)發(fa)人員應該對(dui)IIS理論層(ceng)的(de)知(zhi)識了解(jie)的(de)多一些~第四講 HttpModule中的(de)幾大(da)事件

返回目錄

本(ben)文主(zhu)要介紹HttpModule,它(ta)在(zai)(zai)一(yi)(yi)個網(wang)頁(ye)請求(qiu)過(guo)程(cheng)中(zhong)(zhong)是一(yi)(yi)個怎(zen)樣(yang)的(de)過(guo)程(cheng)是我(wo)(wo)們(men)要知(zhi)道的(de),在(zai)(zai)網(wang)頁(ye)加載(zai)過(guo)程(cheng)中(zhong)(zhong)HttpModule在(zai)(zai)何時(shi)被執行也是我(wo)(wo)們(men)要知(zhi)道的(de),以(yi)及,HttpModule在(zai)(zai)網(wang)頁(ye)請求(qiu)過(guo)程(cheng)中(zhong)(zhong),所被觸發的(de)各個事(shi)件也是我(wo)(wo)們(men)要知(zhi)道的(de),下面就(jiu)帶(dai)著問題來看文章(zhang)吧(ba)

ASP.NET對請求處理的過(guo)程(cheng)

當請求(qiu)(qiu)一個*.aspx文件(jian)的(de)時候,這個請求(qiu)(qiu)會(hui)被inetinfo.exe進(jin)程(cheng)(cheng)(cheng)截(jie)獲,它判斷文件(jian)的(de)后綴(aspx)之后,將這個請求(qiu)(qiu)轉交給 ASPNET_ISAPI.dll(否則交給對應的(de)應用程(cheng)(cheng)(cheng)序去解釋它),ASPNET_ISAPI.dll會(hui)通(tong)過http管道(Http PipeLine)將請求(qiu)(qiu)發送給ASPNET_WP.exe進(jin)程(cheng)(cheng)(cheng),在(zai)ASPNET_WP.exe進(jin)程(cheng)(cheng)(cheng)中(zhong)通(tong)過HttpRuntime來(lai)處理這個請求(qiu)(qiu),處理完 畢將結果返回(hui)客戶端。

下面看一個各個術語的含義

inetinfo.exe進程:是www服務的進程,IIS服務和ASPNET_ISAPI.DLL都寄存在此進程中。
ASPNET_ISAPI.DLL:是處理.aspx文件的win32組件。其實IIS服務器是只能識別.html文件的,當IIS服務器發現被請求的文件是.aspx文件時,IIS服務器將其交給aspnet_isapi.dll來處理。
aspnet_wp.exe進程:ASP.NET框架(jia)進(jin)程,提(ti)供.net運行的托管(guan)環境,.net的CLR(公(gong)共語言運行時)就是寄存在(zai)此(ci)進(jin)程中。

aspnet_wp處理一個Http Request的流程

 HttpRequest-->

inetinfo.exe-->

ASPNET_ISAPI.dll-->

ASPNET_WP.exe-->

HttpRuntime-->

HttpApplication Factory-->

HttpApplication-->

HttpModule-->

HttpHandler Factory-->

HttpHandler-->

HttpHandler.ProcessRequest()

通過上面的流程中,我們可以看到HttpModel在何時被執行的。
ASP.NET請求(qiu)(qiu)處(chu)理過程(cheng)(cheng)是(shi)基于管道(dao)模型(xing)的(de),這個管道(dao)模型(xing)是(shi)由(you)多個HttpModule和HttpHandler組成,ASP.NET 把http請求(qiu)(qiu)依次傳遞給管道(dao)中(zhong)各個HttpModule,最終被HttpHandler處(chu)理,處(chu)理完成后(hou),再次經過管道(dao)中(zhong)的(de)HTTP模塊,把結果返回給 客戶端。我(wo)們可(ke)以(yi)在(zai)每(mei)個HttpModule中(zhong)都(dou)可(ke)以(yi)干預請求(qiu)(qiu)的(de)處(chu)理過程(cheng)(cheng)。

注意:在http請求的處理過程中,只能調用一個HttpHandler,但可以調用多個HttpModule

HttpModule會注冊以下事件

        AcquireRequestState 當ASP.NET運行時準備好接收當前HTTP請求的對話狀態的時候引發這個事件。
        AuthenticateRequest 當ASP.NET 運行時準備驗證用戶身份的時候引發這個事件。
        AuthorizeRequest 當ASP.NET運行時準備授權用戶訪問資源的時候引發這個事件。
        BeginRequest 當ASP.NET運行時接收到新的HTTP請求的時候引發這個事件。
        Disposed 當ASP.NET完成HTTP請求的處理過程時引發這個事件。
        EndRequest 把響應內容發送到客戶端之前引發這個事件。
        Error 在處理HTTP請求的過程中出現未處理異常的時候引發這個事件。
        PostRequestHandlerExecute 在HTTP處理程序結束執行的時候引發這個事件。
        PreRequestHandlerExecute 在ASP.NET開始執行HTTP請求的處理程序之前引發這個事件。在這個事件之后,ASP.NET 把該請求轉發給適當的HTTP處理程序。
        PreSendRequestContent 在ASP.NET把響應內容發送到客戶端之前引發這個事件。這個事件允許我們在內容到達客戶端之前改變響應內容。我們可以使用這個事件給頁面輸出添加用于所有頁面的內容。例如通用菜單、頭信息或腳信息。
        PreSendRequestHeaders 在ASP.NET把HTTP響應頭信息發送給客戶端之前引發這個事件。在頭信息到達客戶端之前,這個事件允許我們改變它的內容。我們可以使用這個事件在頭信息中添加cookie和自定義數據。
        ReleaseRequestState 當ASP.NET結束所搜有的請求處理程序執行的時候引發這個事件。
        ResolveRequestCache 我們引發這個事件來決定是否可以使用從輸出緩沖返回的內容來結束請求。這依賴于Web應用程序的輸出緩沖時怎樣設置的。
        UpdateRequestCache 當(dang)ASP.NET完(wan)成了當(dang)前的(de)(de)HTTP請求(qiu)的(de)(de)處理,并且(qie)輸出內容已經準備好添加給輸出緩(huan)沖的(de)(de)時(shi)候,引發這個(ge)事(shi)件。這依(yi)賴(lai)于Web應用程序的(de)(de)輸出緩(huan)沖是如何設置(zhi)的(de)(de)。

好了,有了上面的(de)基礎知識(shi)之后,相信各位(wei)對HttpModule有了一個全新的(de)認(ren)識(shi)了吧。

返回目錄

posted @ 2014-10-09 11:50  張占嶺  閱讀(1467)  評論(0)    收藏  舉報