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

Cal*_*aNN 0 iis-7 httpmodule integrated-pipeline-mode asp.net-mvc-3

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

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

Jos*_*uch 5

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

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

    <system.webServer>
      <modules>
        <add name="DynamicRequestModule" type="..." preCondition="managedHandler" />
        <add name="StaticRequestModule" type="..." />
Run Code Online (Sandbox Code Playgroud)

给定此配置,"DynamicRequestModule"模块将仅在请求针对具有托管处理程序的资源时执行.