<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.