2010-11-24 25 views
5

這是我想做的事:如何在IIS 7中配置Http處理程序?

  1. 我已經創建了一個類庫項目 這具有實施 IHttpHandler接口的類。讓我們 稱這個類爲ZipHandler。讓我們 說名稱空間是Zip。
  2. 我想,只要任何HTTP 請求進入一個zip文件,我 ZipHandler應當予以受理, 無論該請求是否是 到一個Asp.Net應用程序或 正常的虛擬目錄。

查詢:

  1. 是否有可能(應給予 約集成的管線 等在IIS 7的炒作)?
  2. 怎麼辦?

回答

6

這裏的信息,我一直在尋找:

如果你想在IIS 7 Web服務器 一級註冊您的自定義 HTTP處理程序,您必須編譯你的HTTP 處理成一個強命名程序集 並將其部署到全局程序集 緩存(GAC),因爲IIS 7只挑選 上調配置部署到GAC的程序集。它 不接收任何其他地方部署的組件 ,例如特定網站的目錄 或 Web應用程序。

我們的目標是在Web服務器級別添加此處理程序。在GAC中部署處理程序後,打開Web服務器級別的web.config(右鍵單擊並瀏覽 - >打開Web。這裏的配置顯示),並把這樣的事情在處理部分(類的完全限定名):

<handlers> 
<add name=」Ch8_RssHandler」 path=」*.rss」 verb=」*」 
type=」ProIIS7AspNetIntegProgCh8.RssHandler, Version=1.0.0.0, Culture=neutral, 
PublicKeyToken=369d834a77」 preCondition=」integratedMode」 /> 
</handlers> 

注:信息片段(第1段和代碼示例)從書中採取:
Professional IIS 7 and ASP.Net Integrated Programming by Dr. Shahram Khosravi

似乎是一個非常不錯的書:)

3

此MSDN文章How to: Configure an HTTP Handler Extension in IIS解釋了您需要做的事情。有關集成模式,請參閱段落。

.zeip的文件擴展名必須在httpHandlers元素和處理程序元素中註冊。

您必須在「操作」窗格中單擊「添加託管處理程序」。

在IIS 7.0中使用IIS管理器添加自定義處理程序擴展相當於在Web.config文件中註冊處理程序擴展。

1

我做了一個測試,VS2012

我的處理是這樣的

namespace MyProject 
{ 
    public class ZipHandler: IHttpHandler 
    { 
     public bool IsReusable { get { return true; } } 
     public void ProcessRequest(HttpContext context) { ... } 
    } 
} 

我的web.config是

<configuration> 
    <system.web> 
    <compilation debug="true" targetFramework="4.0" /> 
    </system.web> 
    <system.webServer> 
    <handlers> 
     <add 
     name="ZipHandler" 
     path="*.zip" 
     verb="*" 
     type="MyProject.ZipHandler" 
     preCondition="integratedMode" 
     /> 
    </handlers> 
    </system.webServer> 

</configuration> 

這樣,我可以問「foo.zip」,並有我的處理程序獲得請求。

Rick Strahl還有一篇文章可以幫助您排查處理程序和模塊的問題:HttpModule and HttpHandler sections in IIS 7 web.config files