我對httpmodules和httphandlers有一些疑問,我對他們的真實需求有些困惑,我創建了許多網站,但很少使用它們,當然我沒有從不使用它們中受益,這些好處是什麼?httpmodules httphandlers,它們的理想用途是什麼?何時使用以及何時不使用?
何時使用以及何時不使用?
我對httpmodules和httphandlers有一些疑問,我對他們的真實需求有些困惑,我創建了許多網站,但很少使用它們,當然我沒有從不使用它們中受益,這些好處是什麼?httpmodules httphandlers,它們的理想用途是什麼?何時使用以及何時不使用?
何時使用以及何時不使用?
您可以使用httpmodules進行身份驗證,審計或URL重寫。由於每個請求都先通過所有模塊,在由httphandler處理之前,這是在特定的應用程序代碼之前應用要運行的代碼的地方。
如果您不想依賴於asp.net引擎,那麼您將使用httphandler。例如,你可以編寫你自己的渲染機制,基於AJAX,XML和XSLT,它不依賴於傳統的asp.net頁面。
的HttpModules,當你想或者通過完全改變行爲或添加前置或後置處理的文檔來更改IIS的文件默認處理HttpHandlers的是有用的。
我對HttpModule的一個實際應用是創建動態縮略圖。我寫了一個處理所有圖像請求的HttpModule。如果請求包含查詢字符串「?thumb」,我會動態生成縮略圖,而不是提供原始圖像。
我也看到的HttpModules用於去除aspx頁面輸出和URL重寫註釋和空白。
您是否發現自己在ASPX Page_Load事件中編寫代碼以將某些內容發送到響應,然後調用Response.End?這可能最好寫成HttpHandler(ashx)。
HttpHandlers非常適合重新路由某些文件類型和其他資源的請求。例如,當您需要針對ASP.NET無法通過FormsAuthentication保護的文件類型的傳入請求執行某些操作時,您實際上可以確定它是否是位於特定目錄中的特定文件類型,並將用戶重定向到另一頁如果未經授權。
HttpModules可以以獨立於資源的方式爲您的應用程序執行特定處理。更多的技術解釋可以在這裏找到: http://www.15seconds.com/issue/020417.htm
此外,它們會爲每個請求添加開銷,這意味着您不應該將它們用於進程密集型任務。
我會引用用法,人們已經給出了很好的定義。
HTTP處理程序
成像要呈現一個網站的地圖搜索引擎爬蟲,而不是彈出文件保存對話框(該文件保存時ASP.NET/IIS沒有默認處理程序對話框出現對於所請求的文件類型,例如txt)。 我寫了一個HTTP處理程序來動態構建站點地圖文件(從數據庫中提取站點地圖信息)。
+1是的,我從幾天前做過:) – 2009-08-16 20:48:38