2011-05-20 34 views
0

在IIS7集成模式下,特别是在ASP.NET MVC和.NET4中,所有模块都运行所有请求。 runAllManagedModulesForAllRequests = “真”。让runAllManagedModulesForAllRequests =“false”让我感到头痛和太多问题,直到我感到困惑。在httpmodule中diffrentiate静态文件和asp.net页面 - IIS7

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

回答

5

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

如果您将模块分成两部分,一部分用于托管处理程序请求,另一部分用于其他任何部分,那么在您的web.config中添加“托管处理程序请求”模块的位置,可以添加属性preCondition =“ managedHandler”。因此,它应该是这样的:

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

鉴于此配置,只有当请求是针对具有托管处理资源的“DynamicRequestModule”模块将被执行。

+0

好的,也许你是对的,但我现在无法测试它。我上次做了什么,在BeginRequest中检查URL是否包含图像,javascript或css文件扩展名将被忽略。因为不是一个正确的解决方案,但它的工作原理。 – CallMeLaNN 2011-08-23 01:47:01