2009-08-16 48 views

回答

6

您可以使用httpmodules進行身份驗證,審計或URL重寫。由於每個請求都先通過所有模塊,在由httphandler處理之前,這是在特定的應用程序代碼之前應用要運行的代碼的地方。

如果您不想依賴於asp.net引擎,那麼您將使用httphandler。例如,你可以編寫你自己的渲染機制,基於AJAX,XML和XSLT,它不依賴於傳統的asp.net頁面。

3

的HttpModules,當你想或者通過完全改變行爲或添加前置或後置處理的文檔來更改IIS的文件默認處理HttpHandlers的是有用的。

我對HttpModule的一個實際應用是創建動態縮略圖。我寫了一個處理所有圖像請求的HttpModule。如果請求包含查詢字符串「?thumb」,我會動態生成縮略圖,而不是提供原始圖像。

我也看到的HttpModules用於去除aspx頁面輸出和URL重寫註釋和空白。

4

您是否發現自己在ASPX Page_Load事件中編寫代碼以將某些內容發送到響應,然後調用Response.End?這可能最好寫成HttpHandler(ashx)。

+0

+1是的,我從幾天前做過:) – 2009-08-16 20:48:38

2

HttpHandlers非常適合重新路由某些文件類型和其他資源的請求。例如,當您需要針對ASP.NET無法通過FormsAuthentication保護的文件類型的傳入請求執行某些操作時,您實際上可以確定它是否是位於特定目錄中的特定文件類型,並將用戶重定向到另一頁如果未經授權。

HttpModules可以以獨立於資源的方式爲您的應用程序執行特定處理。更多的技術解釋可以在這裏找到: http://www.15seconds.com/issue/020417.htm

此外,它們會爲每個請求添加開銷,這意味着您不應該將它們用於進程密集型任務。

2

兩個處理程序和模塊真的只能在ASP.NET管道模型的背景下,如何理解您創建適合這一模式自定義處理程序/模塊。

夫婦的良好資源herehere

正如其他人所說模塊可以用來生成在某些特定事件點行爲(另一種常見的用途是全球性的異常處理),處理程序創建端點請求處理(它不只是一個聰明的名稱),其中一個asp。淨頁面實例(最終只是一個嚴重包裝的處理程序)將會不必要地沉重或完全錯誤。就我個人而言,我會在任何時候使用我創建的不輸出HTML的東西,隨着開發網絡應用程序而不是網站,它越來越普遍。

3

我會引用用法,人們已經給出了很好的定義。

HTTP處理程序
成像要呈現一個網站的地圖搜索引擎爬蟲,而不是彈出文件保存對話框(該文件保存時ASP.NET/IIS沒有默認處理程序對話框出現對於所請求的文件類型,例如txt)。 我寫了一個HTTP處理程序來動態構建站點地圖文件(從數據庫中提取站點地圖信息)。

相關問題