1. 程式人生 > >怎樣在iis6 和 iis7 中配置自定義的IHttpHandler類

怎樣在iis6 和 iis7 中配置自定義的IHttpHandler類

現在我們有一個解決方案,裡面有兩個專案,分別命名為common和test,在common這個專案中我們新建了一個名為MyHandler的類,該類繼承了IHttpHandler這個介面。在test這個專案中新增common這個專案的引用。為了應用MyHandler這個自定義的響應事件,我們需要在web.config這個檔案中進行相應的配置,在iis7中,我們的iis託管管道模式有兩種分別是整合模式和經典模式,整合模式是iis7的新的一種託管模式,經典模式是針對iis7之前的,所以在這兩種模式下對自定義的httphandler類的配置是不同的。

在經典模式下,我們需要在web.config檔案中作如下配置:

  <system.web>
      <compilation debug="true" targetFramework="4.5" />
      <httpRuntime targetFramework="4.5" />
    <httpHandlers>
      <add path="*.aspx" verb="*" type="common.MyHandler,common"/>
    </httpHandlers>
    </system.web>

也就是在system.web這個節點裡面新增<httpHandlers>節點,然後再<httpHandlers>節點裡面新增自定義的httphandler處理程式。其中path指的是客戶端請求的url的格式,這裡指向了所有以.aspx為字尾的請求,verb的值可以是“post”,“get”和“*”,"*"代表無論客戶端是以post的方式請求的還是以“get”方式向伺服器請求資源,同理,“post”指的是客戶端以”post“的請求方式向伺服器請求資源。type的值的格式為:”空間名.類名,專案名“,類名就是實現了 IHttpHandler介面的類,空間名就是這個類所在的名稱空間名,專案名就是該類所在專案的名稱,也就是在test裡面新增的引用的名稱(dll的檔名)

在整合模式下,我們在web.config的配置如下:

<system.webServer>
      <handlers>
        <add name="CommonHandler" path="*.aspx" verb="*" type="common.com.CommonHandler"/>
      </handlers>
    </system.webServer>

也就是說我們不能在 <system.web>這個節點裡面配置了,這裡面的配置和上面的差不多,不同的地方在於這裡面多了一個name屬性,name的值就是實現了 IHttpHandler介面的類的名稱,type的值則是這個類的完整的引用路徑,格式為:“空間名.類名”,注意,此處不需要“用逗號隔開再加專案名”