tnblog
首页
视频
资源
登录
愿你出走半生,归来仍是少年
排名
6
文章
6
粉丝
16
评论
8
{{item.articleTitle}}
{{item.blogName}} : {{item.content}}
ICP备案 :渝ICP备18016597号-1
网站信息:2018-2024TNBLOG.NET
技术交流:群号656732739
联系我们:contact@tnblog.net
公网安备:50010702506256
欢迎加群交流技术

httpmodule忽略静态资源

6097人阅读 2019/3/19 11:33 总访问:1939525 评论:0 收藏:0 手机
分类: NET


只需要配置一个preCondition="managedHandler"即可

<system.webServer>
  <modules>
    <add name="MyModule" type="MyNamespace.MyModule" preCondition="managedHandler" />
  </modules>
</system.webServer>

加上了preCondition="managedHandler"这个配置项后,在IIS7的集成模式下,

上面自定义的MyModule这个HttpModule就不会去处理静态文件(.html .css .js .jpeg等)的请求了,

只会处理托管文件(aspx, ascx 及 MVC等)的请求。


此外在<system.webServer>的<modules>节点上还有个配置项叫runAllManagedModulesForAllRequests如下面代码所示:

<system.webServer>
  <modules runAllManagedModulesForAllRequests="true">
    <add name="MyModule1" type="MyNamespace.MyModule1" preCondition="managedHandler" />
    <add name="MyModule2" type="MyNamespace.MyModule2" preCondition="managedHandler" />
    <add name="MyModule3" type="MyNamespace.MyModule3" preCondition="managedHandler" />
    <add name="MyModule4" type="MyNamespace.MyModule4" preCondition="managedHandler" />
    <add name="MyModule5" type="MyNamespace.MyModule5" />
  </modules>
</system.webServer>


如果你将runAllManagedModulesForAllRequests设置为true,那么ASP.NET就会忽略<modules>所有子节点的preCondition设置

,相当于上面代码中MyModule1、MyModule2、MyModule3和MyModule4都没有设置preCondition="managedHandler",

MyModule1到MyModule5仍然会处理静态文件(.html .css .js .jpeg等)的请求,

所以runAllManagedModulesForAllRequests相当于是一个快捷设置,可以关闭<modules>所有子节点的preCondition设置

,强制使所有自定义的HttpModule既处理静态文件(.html .css .js .jpeg等)请求又处理托管文件(aspx, ascx 及 MVC等)请求,

默认情况下runAllManagedModulesForAllRequests是为false的。




欢迎加群讨论技术,群:677373950(满了,可以加,但通过不了),2群:656732739

评价