2012-06-15 37 views
121

我想知道什么是<模块runAllManagedModulesForAllRequests =“真” />含义

<modules runAllManagedModulesForAllRequests="true" /> 

我使用IIS 7.5的含义,我有一个简单的Web应用程序。我是否需要在我的web.config文件中编写这个。 我也为jquery ajax调用写了几个http处理程序。 我正在使用表单身份验证和asp.net 4.0。

如何确定哪个模块需要运行,哪些模块不能运行?

回答

108

模块前提条件:

的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模块的示例,请参阅“How to Take Advantage of IIS Integrated Pipeline”。

无论“managedHandler”的先决条件如何,您还可以使用快捷方式启用所有托管(ASP.NET)模块以运行应用程序中的所有请求。

为了使所有管理模块,用于所有请求,而配置每个模块条目删除“managedHandler”前提运行,使用runAllManagedModulesForAllRequests属性在<modules>部分:

<modules runAllManagedModulesForAllRequests="true" />  

当你使用这个属性,“managedHandler”前提条件无效,并且所有托管模块都会针对所有请求运行。

IIS Modules Overview: Preconditions

+0

复制是好运行所有车型的所有请求,或者我应该在那里更具体。这会影响应用程序的速度吗? –

+2

是的,会有性能问题。您应该使用预置条件。 –

+3

那么我应该如何决定我必须使用哪个模块,哪个模块不适用。 –

相关问题