HttpModule是如何工作的

2022-08-29 06:51:09 字數 3606 閱讀 9666

當乙個

請求到達

時,整個

asp.net framework

系統還並沒有對這個

請求做任何處理,也就是說此時對於

請求來講,

是乙個http

請求的「必經之路」,所以可以在這個

請求傳遞到真正的請求處理中心(

)之前附加一些需要的資訊在這個

請求資訊之上,或者針對截獲的這個

請求資訊作一些額外的工作,或者在某些情況下乾脆終止滿足一些條件的

請求,從而可以起到乙個

filter

過濾器的作用。示例1

成員public

void dispose()

{}public

#endregion}}

在web.config

進行如下配置

深入了解httpmodule

乙個http

請求在httpmodule

容器的傳遞過程中,會在某一時刻(

resolverequestcache

事件)將這個

請求傳遞給

容器。在這個事件之後,

容器會建立乙個

的入口例項,但是此時並沒有將

請求控制權交出,而是繼續觸發

acquirerequeststate

事件以及

prerequesthandlerexcute

事件。在

prerequesthandlerexcute

事件之後,

視窗就會將控制權暫時交給

容器,以便進行真正的

請求處理工作。

而在httphandler

容器內部會執行

processrequest

方法來處理

請求。在容器

處理完畢整個

請求之後,會將控制權交還給

則會繼續對處理完畢的

請求資訊流進行層層的轉交動作,直到返回到客戶端為止。

圖1:httpmodule

生命週期示意圖標例2

:驗證httpmodule

生命週期

多個自定義的http module的運作

從執行結果可以看到,在

web.config

檔案中引入自定義

的順序就決定了多個自定義

在處理乙個

請求的接管順序。注:系統預設那幾個

是最先衩

asp.net framework

所載入上去的。示例3

:(**類同示例2)

httpmodule中終止此次的http請求

可以利用

通過呼叫

方法實現當滿足某乙個條件時終止此次的

請求。需要注意的是,即使呼叫了

方法終止了乙個

請求,asp.net framework

仍然會觸發

後面的這

3個事件:

endrequest

事件、presendrequestheaders

事件、presendrequestcontent

事件。如果存在多個自定義的

的話,當

module1

終止了乙個

請求,這個

請求將不會再觸發

module2

中相應的事件了,但

module2

的最後三個事件仍會被觸發。示例4

參考資料

《asp.net

深入解析》

《asp.net

實用全書》

HttpModule工作機制

httpmodule是如何工作的 當乙個http 請求到達 時,整個 asp.net framework 系統還並沒有對這個 請求做任何處理,也就是說此時對於 請求來講,是乙個http 請求的 必經之路 所以可以在這個 請求傳遞到真正的請求處理中心 之前附加一些需要的資訊在這個 請求資訊之上,或者針...

HttpModule到底是個什麼東西

在學習dnn到urlrewritemodule類時 urlrewritemodule.vb中 發現這個類是由ihttpmodule介面繼承來的。一查msdn知道了urlrewritemodule原來是個httpmodule。那麼httpmodule到底是個什麼東西?有什麼用?用了有什麼好處?http...

SSL是如何工作的

金鑰密碼系統介紹 這篇文章向大家闡述了netscape公司是如何使用rsa的公用金鑰密碼系統來實現網際網路安全的。netscape的安全套接層的實現就利用了這篇文章中所討論的技術。rsa的公用金鑰密碼系統廣泛地應用於計算機工業的認證和加密方面。netscape得到rsa資料安全公司的許可可以使用公用...