在IIS7集成模式下,特别是在ASP.NET MVC和.NET4中,所有模块都针对所有请求运行。 runAllManagedModulesForAllRequests = “真”。使runAllManagedModulesForAllRequests =“false”给我带来了很多问题,直到我感到困惑为止。
所以为了简单起见,让我的模块接受包括静态文件在内的所有请求,但是在像BeginRequest这样的模块中,我只想处理它不是静态文件。如何在模块中过滤或检查这种情况?
答案 0 :(得分:5)
这并不完全回答你的问题,但由于没有其他人回答,我有可能成为解决方案的一部分。
如果将模块拆分为两个,一个用于托管处理程序请求,另一个用于其他一切,则在web.config中添加“托管处理程序请求”模块,可以添加属性preCondition =“managedHandler ”。所以它看起来像这样:
<system.webServer>
<modules>
<add name="DynamicRequestModule" type="..." preCondition="managedHandler" />
<add name="StaticRequestModule" type="..." />
鉴于此配置,“DynamicRequestModule”模块仅在请求针对具有托管处理程序的资源时才会执行。