標籤:

HttpModule到底是個什麼東西

[DNN學習所得]HttpModule到底是個什麼東西 Posted on 2005-05-14 15:47 二十四畫生 閱讀(3769) 評論(7) 編輯 收藏 所屬分類: .NET文章 、DotNetNuke(DNN)

  在學習DNN到UrlRewriteModule類時(UrlRewriteModule.vb中),發現這個類是由IHttpModule介面繼承來的。一查MSDN知道了UrlRewriteModule原來是個HttpModule。那麼HttpModule到底是個什麼東西?有什麼用?用了有什麼好處?  HttpModule這個東西我原來從來沒有用到過(可見自己的知識面和.net的龐大功能有多麼大的差別)。這次學習DNN讓我有機會見到HttpModule,不能放過這個知識點的空缺。在查詢了相關的資料以後終於算是對HttpModule有了初步的了解。

  HttpModule 是實現 IHttpModule 介面和處理事件的程序集。ASP.NET 包含一組可由應用程序使用的 HttpModule 模塊。例如,ASP.NET 提供了 SessionStateModule 來嚮應用程序提供會話狀態服務。可以創建自定義 HttpModule 以響應 ASP.NET 事件或用戶事件。編寫 HttpModule 的一般過程為: 1、實現 IHttpModule 介面,如:

PublicClassUrlRewriteModuleClassUrlRewriteModule

ImplementsIHttpModule

EndClass

2、處理 Init 方法並為所需事件進行註冊,如:

PublicSubInit()SubInit(ByValapplicationAsHttpApplication)ImplementsIHttpModule.Init

"初始化時為HttpApplication事件BeginRequest註冊事件處理程序OnBeginRequest

AddHandlerapplication.BeginRequest,AddressOfMe.OnBeginRequest

EndSub

3、處理該事件,如:

PublicSubOnBeginRequest()SubOnBeginRequest(ByValsAsObject,ByValeAsEventArgs)

"代碼略

EndSub

4、如果必須進行清理,還可根據需要實現 Dispose 方法。

PublicSubDispose()SubDispose()ImplementsIHttpModule.Dispose

EndSub

5、在 Web.config 中註冊該模塊。

<!--在一個應用程序內配置HTTP模塊-->

<httpModules>

<addname="UrlRewrite"type="DotNetNuke.HttpModules.UrlRewriteModule,DotNetNuke.HttpModules.UrlRewrite"/>

</httpModules>

  在原來要處理application.BeginRequest事件(發出信號表示新的請求時觸發),一般都寫在 Global.asax 里的Application_BeginRequest中,原來程序中BeginRequest事件中的處理並不多,代碼量也很少,把BeginRequest事件的處理的代碼都放到Global.asax中也沒有什麼問題。可是在DNN中BeginRequest要處理的事件很多,還可能有擴充的需求。而且將不同功能的事件處理,寫到不同HttpModule中也能夠使代碼結構更加清晰。  但是如果有多個HttpModule都包括application.BeginRequest那麼程序的執行先後順序又是怎樣的呢?是不是先執行Global.asax 里的,然後按照Web.config中的順序來呢?關於這一點還沒有找到答案,希望知道的人能告知一聲,謝謝!使用HttpModule還有什麼更多的好處呢?也希望大家能指出,再次謝謝!

相關知識:http://msdn.microsoft.com/library/chs/default.asp?url=/library/CHS/cpguide/html/cpconhandlingpublicevents.asp

在ASP.NET中實現Url Rewriting更多相關內容>>

Feedback#re: [DNN學習所得]HttpModule到底是個什麼東西 回復引用查看 2005-05-14 21:40 by R.Z 你可以設置端點跟蹤一下就知道了,我跟蹤的結果是global中的beginrequest最後執行。#re: [DNN學習所得]HttpModule到底是個什麼東西 回復引用查看 2005-05-16 09:25 by 二十四畫生 居然是global中的beginrequest最後執行,看來自己是想錯了。#re: [DNN學習所得]HttpModule到底是個什麼東西 回復引用查看 2005-05-16 13:52 by djshow <Asp.net 深入理解>裡面有一章是專門講httpModule,httpHandler的, 那一章就網上隨處可見的<asp.net 深度歷險> 那裡面講得蠻清楚的,推薦閱讀.#re: [DNN學習所得]HttpModule到底是個什麼東西 回復引用查看 2005-05-23 06:09 by osone 上傳圖片到MSSQL,然後通過一個DataList顯示圖片,datalist中圖片的讀取由一個 ashx文件完成,不知道怎麼搞的,datalist中的圖片不能顯示出來 二十四畫生:對person starter kit 和club starter kit有研究嗎?#re: [DNN學習所得]HttpModule到底是個什麼東西 回復引用查看 2005-07-05 11:56 by Harry 我想聘請一個對dotnetnuke有研究(負責任的)的程序員。如果有興趣請聯繫harry_shine@hotmail.com#re: [DNN學習所得]HttpModule到底是個什麼東西 回復引用查看 2005-07-22 15:12 by 六子 我是在這兒學習HttpModule的: http://www.microsoft.com/china/MSDN/library/architecture/patterns/esp/ImpInterCEptingFilterInASP.mspx#re: [DNN學習所得]HttpModule到底是個什麼東西[未登錄] 回復引用查看 2007-08-12 16:46 by 馬攀科 樓主是我學習的榜樣!
推薦閱讀:

永遠不會被人搶走的兩樣東西 (精美圖文)
年,就這麼過完了,喝了這杯酒就各奔東西吧
寒露以後,這兩件事一定要停止了,比吃任何東西都補!快群發
這種東西, 以後不能炒菜了, 剛剛出人命了, 很多人還在吃
命宮(東西各四命)的計算公式

TAG:東西 |