在httpmodule - IIS7中区分静态文件和asp.net页面

时间:2011-05-20 07:56:40

标签: asp.net-mvc-3 iis-7 httpmodule integrated-pipeline-mode

在IIS7集成模式下,特别是在ASP.NET MVC和.NET4中,所有模块都针对所有请求运行。 runAllManagedModulesForAllRequests = “真”。使runAllManagedModulesForAllRequests =“false”给我带来了很多问题,直到我感到困惑为止。

所以为了简单起见,让我的模块接受包括静态文件在内的所有请求,但是在像BeginRequest这样的模块中,我只想处理它不是静态文件。如何在模块中过滤或检查这种情况?

1 个答案:

答案 0 :(得分:5)

这并不完全回答你的问题,但由于没有其他人回答,我有可能成为解决方案的一部分。

如果将模块拆分为两个,一个用于托管处理程序请求,另一个用于其他一切,则在web.config中添加“托管处理程序请求”模块,可以添加属性preCondition =“managedHandler ”。所以它看起来像这样:

    <system.webServer>
      <modules>
        <add name="DynamicRequestModule" type="..." preCondition="managedHandler" />
        <add name="StaticRequestModule" type="..." />

鉴于此配置,“DynamicRequestModule”模块仅在请求针对具有托管处理程序的资源时才会执行。