學習筆記 httpHandler處理程式

2021-09-08 07:30:03 字數 3333 閱讀 3484

在**開發中, 經常需要對某一類的資源進行統一處理, 針對這種情況, 我們可以通過建立自定義http處理程式來解決.

如上圖所示: iis對於收到的請求會根據請求的副檔名來進行篩選, 預設情況下, 一些靜態資源(如:*.htm、*.html、*.jpg、*.gif等)會由iis直接處理並返回給瀏覽器; 而對於另外一些特殊處理的副檔名(如: *.aspx、*.ashx等), 將使用 c:\windows\microsoft.net\framework\v2.0.50727\aspnet_isapi.dll 將請求傳遞到**處理程式. **處理程式在web.config中查詢到處理該請求的類, 並由該類的物件處理該類請求.

自定義http處理程式的步驟:

1. 自定義類實現ihttphandler介面, 在該類中利用httpcontext物件處理收到的請求.

在處理請求的類中, 可以自定義請求的副檔名(可以為任意名字), 也可以實現ihttpasynchandler介面來非同步的處理http請求.

如果要對同一類檔案的不同請求方式(如:get方式或post方式)分別處理, 可以通過實現了ihttphandle***ctory介面的自定義類來達到目的, 在工廠類中分別為get請求和post請求例項化不同的物件(注意型別名必須大寫).

2. 修改web.config檔案, 新增處理程式的對映. 例如:

3. 在iis中, web程式的屬性中, 「主目錄」 ---> 「應用程式設定」 --> 「配置」中新增相應的字尾名. 注意: 「檢查檔案是否存在」 的勾一定要去掉.

注: ihttphandler介面中, 有兩個成員: isreusable屬性表示該物件是否重用, 通常返回false; processrequest是處理請求的方法.

原始h1

旋轉後的

還有個特殊的handler --- webresource.axd, 這個特殊的處理程式專門用來從程式集中提取資源, 返回給客戶端. 注意: 它的名字是固定的, 不能修改.

assemblyresourceloader類是乙個實現了ihttphandler的處理程式, 允許我們在頁面或者控制項中取得嵌入在程式集中的資源, 如指令碼、和資料檔案等. 該處理程式通過 getwebresourceurl 方法生成url來處理請求並返回資源(直接通過web返回資源).

//獲取嵌入在程式集中的指令碼檔案後, 再嵌入到網頁中

為命名空間, 而script_include.js是指令碼資源名稱

using

system;

[assembly: webresource(

"samples.aspnet.cs.controls.script_include.js",

"")]namespace

samples.aspnet.cs.controls}}

MVC擴充套件HttpHandler

擴充套件用來做防盜煉 訪問特殊字尾名的處理方式 比如 這樣乙個位址 並不是直接訪問伺服器的物理路徑 會根據字尾名 找到當前字尾的處理程式 進行處理 所有字尾為.config的都由httpforbiddenhandler處理 字尾為這個的很安全 別人都是訪問不到的 通過這個 可以自己擴充套件一些特殊字...

使用HttpHandler實現URL重寫

本文所講的是使用asp.net中的httphandler實現url重寫的,它所實現的原理請看這裡,本程式可以處理任何url,因為我在程式中使用了url過慮,只有訪問檔名是數字的才進行處理,並指在內部執行乙個新的頁面,並輸出資料,如下 當然你首先要做的是先建乙個類,並繼承自ihttphandler,然...

使用HttpHandler來監控HTML頁面請求

最近要實現乙個iis7下的純html頁面的請求 由於諸多原因 所以試著做了個html handler 編寫乙個 net 2.0 的httphandler來處理請求 此處是 html檔案的請求 將編譯後的dll檔案放到目標 的bin目錄中 在右上方click add managed handler鏈結...