這是我想做的事:如何在IIS 7中配置Http處理程序?
- 我已經創建了一個類庫項目 這具有實施 IHttpHandler接口的類。讓我們 稱這個類爲ZipHandler。讓我們 說名稱空間是Zip。
- 我想,只要任何HTTP 請求進入一個zip文件,我 ZipHandler應當予以受理, 無論該請求是否是 到一個Asp.Net應用程序或 正常的虛擬目錄。
查詢:
- 是否有可能(應給予 約集成的管線 等在IIS 7的炒作)?
- 怎麼辦?
這是我想做的事:如何在IIS 7中配置Http處理程序?
查詢:
這裏的信息,我一直在尋找:
如果你想在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
似乎是一個非常不錯的書:)
此MSDN文章How to: Configure an HTTP Handler Extension in IIS解釋了您需要做的事情。有關集成模式,請參閱段落。
.zeip的文件擴展名必須在httpHandlers元素和處理程序元素中註冊。
您必須在「操作」窗格中單擊「添加託管處理程序」。
在IIS 7.0中使用IIS管理器添加自定義處理程序擴展相當於在Web.config文件中註冊處理程序擴展。
我做了一個測試,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