【问题标题】:How to configure an Http Handler in IIS 7?如何在 IIS 7 中配置 Http 处理程序?
【发布时间】:2011-05-14 22:01:11
【问题描述】:
这是我想做的:
- 我创建了一个类库项目
这有一个类实现
IHttpHandler 接口。让我们
调用这个类 ZipHandler。让我们
假设命名空间是 Zip。
- 每当有任何 Http
请求是一个 zip 文件,我的
ZipHandler 应该处理它,
不管请求是否
到 Asp.Net 应用程序或
普通虚拟目录。
查询:
- 有没有可能(应该给
关于集成管道的炒作
等在 IIS 7) 中?
- 怎么做?
【问题讨论】:
标签:
c#
asp.net
iis
iis-7
httphandler
【解决方案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