2

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

问题:

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

问题一:

必须重置哪些模块的先决条件(precondition = "")以触发 global.asax.cs 事件(例如Application_BeginRequest)以请求静态内容?

问题2:

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

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

4

1 回答 1

0

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

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

编辑:

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

于 2013-09-25T09:22:16.000 回答