【问题标题】:<modules runAllManagedModulesForAllRequests="true" /> Meaning<modules runAllManagedModulesForAllRequests="true" /> 含义
【发布时间】:2012-06-18 10:00:09
【问题描述】:

我想知道是什么意思

<modules runAllManagedModulesForAllRequests="true" />

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

我如何确定我必须运行哪个模块,哪个不应该运行?

【问题讨论】:

    标签: asp.net web-config


    【解决方案1】:

    模块前提条件:

    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”。

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

    要使所有托管模块能够针对所有请求运行,而无需配置每个模块条目以删除“managedHandler”前置条件,请使用&lt;modules&gt; 部分中的runAllManagedModulesForAllRequests 属性:

    <modules runAllManagedModulesForAllRequests="true" />    
    

    当您使用此属性时,“managedHandler”前置条件无效,所有托管模块都会针对所有请求运行。

    复制自IIS Modules Overview: Preconditions

    【讨论】:

    • 最好为所有请求运行所有模型,否则我会在那里更具体。这会影响应用程序的速度吗?
    • 是的,会有性能问题。您应该改用前置条件。
    • 那么我应该如何决定我必须使用哪个模块以及不使用哪个模块。
    • 一个后续问题。我看到也可以启用单独的模块,而不是全部。请参阅我的问题 (stackoverflow.com/questions/20998816/…),解决方案是添加 &lt;modules runAllManagedModulesForAllRequests="true"&gt;。但我现在看到它可能会产生开销。那么,是否有一个特定的模块负责我可以启用点“。”在 MVC WebAPI Url 中,而不是仅使用 &lt;modules runAllManagedModulesForAllRequests="true"&gt; 启用它们?例如“UrlAuthorization”模块吗?
    • 添加模块标签部分对我有用。我使用 MVC 5、.net framework 4.5.0、IIS 7 和 windows server 2008
    猜你喜欢
    • 1970-01-01
    • 2012-09-11
    • 2012-08-31
    • 1970-01-01
    • 2011-01-03
    • 1970-01-01
    • 1970-01-01
    • 2016-11-16
    相关资源
    最近更新 更多