ASP.NET HttpHandler vs IIS处理程序

时间:2013-05-10 13:42:11

标签: asp.net asp.net-mvc iis iis-7

我已经定义了一个HTTP处理程序,并在我的web.config中添加了一个条目

<add verb="GET" path="TestApp/*" type="TestApp.TestHandler, TestWebApp" />

当我遇到静态资源(例如JPG,PNG文件

)时,这会像我期望的那样工作

我需要我的处理程序也处理像TestApp / logo.gif这样的路径,但似乎IIS已经注册了StaticHandler来拦截这些请求

我的ASP.NET HttpHandler有没有办法只处理路径TestApp / *的静态资源请求,但让IIS StaticHandler处理其他所有内容?

是的,我意识到让IIS使用自己的处理程序处理静态资源更快更有效

2 个答案:

答案 0 :(得分:1)

您应该将此添加到您的web.config:

<modules runAllManagedModulesForAllRequests="true" />

这将确保甚至对静态文件的请求都通过.net管道传递。

答案 1 :(得分:1)

如果您在集成管道模式下运行,您的处理程序将拦截这些请求:

<system.webServer>
    <handlers>
        <add name="TestHandler" path="TestApp/*" verb="GET" type="TestApp.TestHandler, TestWebApp" />
    </handlers>
</system.webServer>

如果您在经典管道模式下运行,则必须在IIS中注册ISAPI筛选器,以使这些请求通过托管处理程序。