如何在IIS 7中配置Http Handler?

时间:2010-11-24 06:09:41

标签: c# asp.net iis iis-7 httphandler

这就是我想要做的事情:

  1. 我创建了一个类库项目 这有一个实现的类 IHttpHandler接口。让我们 叫这个类ZipHandler。让我们 说命名空间是Zip。
  2. 每当有任何Http我都希望这样 请求来一个zip文件,我的 ZipHandler应该处理它, 无论请求是否是 到Asp.Net应用程序或 普通的虚拟目录。
  3. 查询:

    1. 是否有可能(应该给出 关于集成管道的炒作 在IIS 7中?)
    2. 怎么做?

3 个答案:

答案 0 :(得分:6)

以下是我要找的信息:

  

如果您想注册自定义   IIS 7 Web服务器上的HTTP处理程序   等级,你必须编译你的HTTP   处理程序进入强名称程序集   并将其部署到全球大会   缓存(GAC),因为IIS 7只选择   部署到GAC的程序集。它   不会拾取已部署的程序集   其他任何地方,如垃圾箱   特定网站的目录或   网络应用程序。

我们的目标是在Web服务器级别添加此处理程序。在GAC中部署处理程序后,打开Web服务器级别提供的web.config(右键单击并浏览 - >打开web.config show here)并在处理程序部分中输入类似的内容(完全限定名称)类):

<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

看起来像一本非常好的书:)

答案 1 :(得分:3)

这篇MSDN文章How to: Configure an HTTP Handler Extension in IIS解释了您将要做的事情。请参阅集成模式的段落。

.zeip的文件扩展名必须在httpHandlers元素和处理程序元素中注册。

您必须在“操作”窗格中单击“添加托管处理程序”。

在IIS 7.0中使用IIS管理器添加自定义处理程序扩展等同于在Web.config文件中注册处理程序扩展。

答案 2 :(得分:2)

我在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