触发对静态内容的请求的事件,而不将 runAllManagedModulesForAllRequests 设置为 true

2024-01-06

我正在寻找一种更精确的解决方案来处理 ASP.NET 生命周期对静态内容的请求,而无需设置runAllManagedModulesForAllRequests为真。 据我所知的效果是runAllManagedModulesForAllRequests = "true"每个模块的前置条件属性将设置为"".

问题:

  • 我必须保护 Web 应用程序子文件夹中的静态内容免遭未经授权的访问
  • 为了在 ASP.NET 生命周期中包含对这些静态内容的请求,从而触发一些事件,我设置了runAllManagedModulesForAllRequests to true在 web.config 中。
  • 由于此解决方案转动了大轮子,并且整个应用程序的所有托管模块都会受到影响,因此我正在寻找一种更适合的解决方案,仅限于需要此行为的子文件夹。
  • 我需要 IIS6 和 II7 的解决方案

问题一:

需要重置哪些模块的前提条件(precondition = "")来触发 global.asax.cs 事件(例如Application_BeginRequest)对于静态内容的请求?

问题2:

是否可以将此请求处理限制为对单个子文件夹的请求(例如,也许可以通过在此子文件夹中放置经过调整的 web.config,调整主 web.config,...)

任何建议,将不胜感激。谢谢。


您是否考虑过为 global.asax 的正确事件注册自定义 HttpModule,然后仅使用子目录启用 HttpModulelocationmain 中的属性web.config本身?这只是一个可能的解决方案的想法 - 我还没有仔细考虑过..

<location path="subDirectoryPath">
   <system.web>
     <httpmodules>
        <add type="MyCustomModule.Name" name="MyCustomModule" />      
     </httpmodules>
   </system.web>
</location>

EDIT:

您可能必须覆盖您的 web.config,并在其中引入所有 httpModule 部分,然后在正确的前提下将自定义模块插入到正确的位置。 这是为了避免设置runAllManagedModulesForAllRequests to true

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

触发对静态内容的请求的事件,而不将 runAllManagedModulesForAllRequests 设置为 true 的相关文章

随机推荐