【问题标题】:How to configure an Http Handler in IIS 7?如何在 IIS 7 中配置 Http 处理程序?
【发布时间】:2011-05-14 22:01:11
【问题描述】:

这是我想做的:

  1. 我创建了一个类库项目 这有一个类实现 IHttpHandler 接口。让我们 调用这个类 ZipHandler。让我们 假设命名空间是 Zip。
  2. 每当有任何 Http 请求是一个 zip 文件,我的 ZipHandler 应该处理它, 不管请求是否 到 Asp.Net 应用程序或 普通虚拟目录。

查询:

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

【问题讨论】:

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


    【解决方案1】:

    这篇 MSDN 文章 How to: Configure an HTTP Handler Extension in IIS 解释了您必须做什么。请参阅集成模式的段落。

    .zeip 的文件扩展名必须在 httpHandlers 元素和 handlers 元素中注册。

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

    在 IIS 7.0 中使用 IIS Manager 添加自定义处理程序扩展,相当于在 Web.config 文件中注册处理程序扩展。

    【讨论】:

      【解决方案2】:

      这是我要查找的信息:

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

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

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

      注:信息sn-ps(第1段和代码示例)摘自书中:
      Professional IIS 7 and ASP.Net Integrated Programming by Dr. Shahram Khosravi

      看起来很不错的书:)

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-01-28
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-03-21
          相关资源
          最近更新 更多