Asp.net runAllManagedModulesForAllRequests=“false”的具体行为是什么?

Asp.net runAllManagedModulesForAllRequests=“false”的具体行为是什么?,asp.net,iis-7,Asp.net,Iis 7,关于 有关属性的MSDN文档: 一个读/写布尔值。如果为每个请求运行所有托管模块,则为true;否则,错误。默认值为false 这更详细地描述了它的真实价值行为: 此强烈建议的修复程序可能会导致其他问题。这些问题以使所有注册的HTTP模块在每个请求上运行的形式出现,而不仅仅是托管请求,例如aspx。这意味着模块将在ever.jpg.gif.css.html.pdf等上运行 现在关于:runAllManagedModulesForAllRequests=false 我的问题(MSDN文档似乎没有详

关于

有关属性的MSDN文档:

一个读/写布尔值。如果为每个请求运行所有托管模块,则为true;否则,错误。默认值为false

这更详细地描述了它的真实价值行为:

此强烈建议的修复程序可能会导致其他问题。这些问题以使所有注册的HTTP模块在每个请求上运行的形式出现,而不仅仅是托管请求,例如aspx。这意味着模块将在ever.jpg.gif.css.html.pdf等上运行

现在关于:runAllManagedModulesForAllRequests=false

我的问题(MSDN文档似乎没有详细说明)是,除了不为每个请求运行所有托管模块的一般描述之外,假值的行为如何

例如,false是否跳过了一些模块,但通过其他模块运行了请求;请求是否在像处理程序一样处理它的第一个模块上停止。?非托管模块如何适应这种行为

总的来说,对于这种行为是否有一个好的指南或描述

您可能对关于该主题的帖子感兴趣,因为runAllManagedModulesForAllRequests=false所做的工作存在一些细微差别:

runAllManagedModulesForAllRequests=false-与您可能遇到的情况不同 认为不太明显的是当你设置 runAllManagedModulesForAllRequests=false。你可能会想到 非ASP.NET请求不再通过ASP.NET传递 模块管道。但事实并非如此

例如,如果我创建如下模块:

<add name="SharewareModule" type="HowAspNetWorks.SharewareMessageModule"  /> 
默认情况下,它将 对所有请求开火,而不考虑 runAllManagedModulesForAllRequests标志。即使价值 runAllManagedModulesForAllRequests=false,将使用 正在处理的非托管请求。不完全如预期的那样

那么runAllManagedModulesForAllRequests真正有什么好处呢? 它本质上是对managedHandler先决条件的覆盖。如果我 在web.config中声明我的处理程序,如下所示:

<add name="SharewareModule" type="HowAspNetWorks.SharewareMessageModule"  /> 
然后设置

我的模块只会开火 针对托管请求。如果我将标志切换为true,那么现在我的模块 最终处理从IIS传递的所有IIS请求

这个故事的寓意是如果你只想看 NET内容,您应该始终设置 前提条件=managedHandler属性,以确保仅 请求在此模块上激发。但即使你这么做了,也要意识到 runAllManagedModulesForAllRequests=true可以覆盖此选项 设置,因此您的模块必须预期处理任何类型的 请求

您可能对关于该主题的帖子感兴趣,因为runAllManagedModulesForAllRequests=false所做的工作存在一些细微差别:

runAllManagedModulesForAllRequests=false-与您可能遇到的情况不同 认为不太明显的是当你设置 runAllManagedModulesForAllRequests=false。你可能会想到 非ASP.NET请求不再通过ASP.NET传递 模块管道。但事实并非如此

例如,如果我创建如下模块:

<add name="SharewareModule" type="HowAspNetWorks.SharewareMessageModule"  /> 
默认情况下,它将 对所有请求开火,而不考虑 runAllManagedModulesForAllRequests标志。即使价值 runAllManagedModulesForAllRequests=false,将使用 正在处理的非托管请求。不完全如预期的那样

那么runAllManagedModulesForAllRequests真正有什么好处呢? 它本质上是对managedHandler先决条件的覆盖。如果我 在web.config中声明我的处理程序,如下所示:

<add name="SharewareModule" type="HowAspNetWorks.SharewareMessageModule"  /> 
然后设置

我的模块只会开火 针对托管请求。如果我将标志切换为true,那么现在我的模块 最终处理从IIS传递的所有IIS请求

这个故事的寓意是如果你只想看 NET内容,您应该始终设置 前提条件=managedHandler属性,以确保仅 请求在此模块上激发。但即使你这么做了,也要意识到 runAllManagedModulesForAllRequests=true可以覆盖此选项 设置,因此您的模块必须预期处理任何类型的 请求

FWIW

关于设置和它的含义。他也有它存在的一些具体原因,以及为什么你可能不需要它。

FWIW


关于设置和它的含义。他也有它存在的一些具体原因,以及为什么你可能不需要它。

在浏览了Rick Strahl关于这个主题的优秀博客文章后,你可能会对Rick Strahl关于该地产的文章感兴趣。我只想知道微软在其最终MSDN文档中只给了我们一行,这到底是怎么回事?!>>他们一定在某个地方发布了详细信息。@RussCam你能把下面的博客链接作为官方答案吗。它会有价值的。谢谢。我会加上它作为你的答案
在浏览了Rick Strahl关于该主题的优秀博客文章后,我对Rick Strahl关于该地产的文章感兴趣,我只想知道微软在其最终MSDN文档中只给了我们一行代码,这到底是怎么回事?!>>他们一定在某个地方发布了详细信息。@RussCam你能把下面的博客链接作为官方答案吗。它会有价值的。谢谢。将其添加为应答代码。例如,如果我创建的模块如下所示,则代码不显示在下。例如,如果我创建的模块如下所示: