<modules runAllManagedModulesForAllRequests =“ true” />含义


133

我想知道什么是

<modules runAllManagedModulesForAllRequests="true" />

我正在使用IIS 7.5,并且有一个简单的Web应用程序。我需要在我的web.config文件中编写它吗?我还为jquery ajax调用写了一些http处理程序。我正在使用表单身份验证和asp.net 4.0。

如何确定必须运行哪个模块,而不要运行哪个模块?

Answers:


122

模块前提条件:

IIS核心引擎使用前提条件来确定何时启用特定模块。例如,出于性能原因,您可能会确定您只想对同时进入托管处理程序的请求执行托管模块。以下示例(precondition="managedHandler")中的前提条件仅对也由托管处理程序处理的请求(例如对.aspx或.asmx文件的请求)启用表单身份验证模块:

<add name="FormsAuthentication" type="System.Web.Security.FormsAuthenticationModule" preCondition="managedHandler" />

如果删除该属性precondition="managedHandler",则“表单身份验证”还适用于托管处理程序不提供的内容,例如.html,.jpg,.doc,但也适用于经典ASP(.asp)或PHP(.php)扩展名。有关使ASP.NET模块针对所有内容运行的示例,请参见“ 如何利用IIS集成管道 ”。

您也可以使用快捷方式来启用所有托管(ASP.NET)模块,以针对应用程序中的所有请求运行,无论“managedHandler ”前提条件。

要使所有托管模块都能针对所有请求运行,而无需配置每个模块条目以消除“ managedHandler”前提条件,请使用runAllManagedModulesForAllRequests以下<modules>部分中的属性:

<modules runAllManagedModulesForAllRequests="true" />    

使用此属性时,“ managedHandler”前提条件无效,并且所有托管模块均针对所有请求运行。

IIS模块概述中复制:前提条件


是否可以针对所有请求运行所有模型,还是在那儿更具体?这会影响应用程序的速度吗?
2012年

2
是的,会有性能问题。您应该改为使用前提条件。
卡皮尔·汉德尔沃尔

3
那么我该如何决定必须使用哪个模块,而不要使用哪个模块。
2012年

6
后续问题。我看到也可以启用单独的模块,而不是全部。看到我的问题(stackoverflow.com/questions/20998816/…),那里的解决方案是添加<modules runAllManagedModulesForAllRequests="true">。但是我现在看到它可能会产生开销。因此,是否有一个特定的模块负责使我能够获取点“”。在MVC WebAPI Url中,而不是仅使用<modules runAllManagedModulesForAllRequests="true">?例如“ UrlAuthorization”模块吗?
Yves Schelpe 2014年

添加modules标签部分对我有用。我使用MVC 5,.net Framework 4.5.0,IIS 7和Windows Server 2008
Gavin 2014年

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.