为什么忽略我的HttpHandler?

时间:2010-06-28 13:50:17

标签: asp.net iis httphandler web-config ihttphandler

在ASP.NET应用程序中,我需要对发送的每个CSS文件进行一些更改。

所以我创建了一个HttpHandler(在应用程序内部),添加了:

<add verb="*" path="*.css" type="MyWebsite.CssTestHandler,MyWebsite"/>

system.web/httpHandlers中的Web.config并修改了这样的处理程序:

public void ProcessRequest(HttpContext context)
{
    context.Response.Clear();
    context.Response.Write("Hello World");
    context.Response.End();
}

但CSS文件仍然像以前一样,所以处理程序只是被忽略了。

我做错了什么?

3 个答案:

答案 0 :(得分:2)

您需要在IIS中设置通配符映射,请参阅以下链接:

http://www.microsoft.com/technet/prodtechnol/WindowsServer2003/Library/IIS/5c5ae5e0-f4f9-44b0-a743-f4c3a5ff68ec.mspx?mfr=true

这将导致ASP.NET文件的请求由IIS提供,而不仅仅是IIS。

如果应用程序提供非常高的流量,请考虑仅为.css文件设置此映射,甚至更好地更改页面中的CSS数据,而不是更改文件。

答案 1 :(得分:1)

应用程序会忽略您的CSS文件,因为IIS会忽略CSS文件。

它未映射到IIS中的可执行文件。 alt text http://www.fastpics.net/sharepics/imih41904722.jpg

尝试添加.css扩展名并将其映射到.NET dll。

答案 2 :(得分:1)

检查此页面以获取有关所有3种IIS版本(6,7 Classic Pipe和7 Integrated pipeline)的说明: http://learn.iis.net/page.aspx/508/wildcard-script-mapping-and-iis-7-integrated-pipeline/

根据它,在集成管道的情况下,您需要添加以下配置参数:

runAllManagedModulesForAllRequests="True"