亚洲成av人片天堂网九九-国产精品成人av电影不卡-少妇无码专区视频网站-久久人人97超碰爱香蕉

新聞建站cms系統(tǒng)、政府cms系統(tǒng)定制開發(fā)

廣州網(wǎng)站建設(shè)公司-閱速公司

asp.net新聞發(fā)布系統(tǒng)、報紙數(shù)字報系統(tǒng)方案
/
http://m.plnongji.cn/
廣州網(wǎng)站建設(shè)公司

網(wǎng)站技術(shù)

Http Request在整個HttpModule中的生命周期圖

發(fā)布時間:2021/12/7 15:43:54  作者:Admin  閱讀:305  

廣告:

HttpModule對HttpApplication實例進行處理,而HttpApplication有很多事件(對應(yīng)不同的生命周期),這樣就衍生出HttpModule內(nèi)部事件機制和生命周期。

一.HttpModule的事件

BeginRequest 指示請求處理開始
AuthenticateRequest 封裝請求身份驗證過程
AuthorizeRequest 封裝檢查是否能利用以前緩存的輸出頁面處理請求的過程
ResolveRequestCache 從緩存中得到相應(yīng)時候觸發(fā)
--------- 建立HttpHandler控制點, 接著處理(HttpHandler已經(jīng)建立,此后Session可用)--------
AcquireRequestState 加載初始化Session時候觸發(fā)
PreRequestHandlerExecute 在Http請求進入HttpHandler之前觸發(fā)
HttpHandler.ProcessRequest()
--------- 返回到HttpModule接著處理(HttpHandler生命周期結(jié)束,Session失效)--------
PostRequestHandlerExecute 在Http請求進入HttpHandler之后觸發(fā)
ReleaseRequestState 存儲Session狀態(tài)時候觸發(fā)
UpdateRequestCache 更新緩存信息時觸發(fā)
EndRequest 在Http請求處理完成的時候觸發(fā)
PreSendRequestHenaders 在向客戶端發(fā)送Header之前觸發(fā)
PreSendRequestConternt 在向客戶端發(fā)送內(nèi)容之前觸發(fā)
------------將處理后的數(shù)據(jù)返回客戶端-------------

說明:
a.BeginRequest和EndRequest分別是HttpModule容器最開始的的和最后的事件;
b.EndRequest之后還會觸發(fā)PreSendRequestHeaders事件和PreSendRequestContent事件,這不是在HttpModule外的兩個事件,表示 HttpModule結(jié)束,即將開始向Client發(fā)送數(shù)據(jù)。

二.驗證HttpModule生命周期
說明:

a.HttpModule容器會將HttpRequest傳送到HttpHandler容器,這個時間點是ResolveRequestCache事件;
b.HttpModule容器會建立HttpHandler實例作為入口—Session從此生效;
c.觸發(fā)AcquireRequestState事件以及PreRequestHandlerExecute事件;
d.HttpModule容器便將對HttpRequest的控制權(quán)限轉(zhuǎn)讓給HttpHandler容器;
e.HttpModule容器處理HttpRequest—使用自身的ProcessRequest方法,將對其控件權(quán)又還給HttpModule容器—之后Session失效。

三.利用HttpModule實現(xiàn)終止此次HttpRequest請求

在BeginRequest事件中,使用HttpApplication.CompleteRequest()方法,可以實現(xiàn)當滿足一定條件時終止此次HttpRequest請求。
Application.CompleteRequest();
說明 :
a.對于一個HttpModule,在BeginRequest中終止,但是仍然會調(diào)用EndRequest事件,以及PreSendRequestHeaders事件和PreSendRequestContent事件。也可以說是直接跳轉(zhuǎn)到EndRequest事件,而不會調(diào)用這期間的事件;
b.如果有兩個HttpModule,在第一個HttpModule的BeginRequest中終止,僅僅不會調(diào)用第二個HttpModule的BeginRequest,但仍然會調(diào)用兩個EndRequest事件,以及PreSendRequestHeaders事件和PreSendRequestContent事件。

廣告:

相關(guān)文章
HttpModule
cms新聞系統(tǒng)購買咨詢
掃描關(guān)注 廣州閱速軟件科技有限公司
掃描關(guān)注 廣州閱速科技