0

下面是 ASP.NET webforms web.config 的默认配置,用于在 IIS 7 (.5) 下指定处理程序和模块

当您添加自定义模块和处理程序时,我想知道在添加模块条目之前是否需要删除名称 =“自定义模块”。我找不到太多关于是否需要删除或为什么需要删除的信息。我看到了一些他们没有删除的例子。

我问的原因是我隐约记得阅读有关模块引用的内容会每次都添加相同的条目,而不是只有一个,最终失败。但我现在在任何地方都找不到。

如果有人可以确认,将不胜感激。

<system.webServer>
  <validation validateIntegratedModeConfiguration="false"/>
  <modules>
    <remove name="ScriptModule" />
    <add name="ScriptModule" preCondition="managedHandler" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
  </modules>
  <handlers>
    <remove name="WebServiceHandlerFactory-Integrated"/>
    <remove name="ScriptHandlerFactory" />
    <remove name="ScriptHandlerFactoryAppServices" />
    <remove name="ScriptResource" />
    <add name="ScriptHandlerFactory" verb="*" path="*.asmx" preCondition="integratedMode"
         type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
    <add name="ScriptHandlerFactoryAppServices" verb="*" path="*_AppService.axd" preCondition="integratedMode"
         type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
    <add name="ScriptResource" preCondition="integratedMode" verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
  </handlers>
</system.webServer>
4

1 回答 1

1

查看 MSDN,但在<add> page中,您将阅读:

这些<add>指令以自上而下的顺序进行处理。如果两个或多<add>个子指令指定相同的动词/路径组合,则最终覆盖所有其他子指令。

基于此,为了<add>覆盖指令,它必须具有相同的动词/路径组合。如果它们不匹配,则两个指令都处于活动状态,这可能会导致冲突问题。

在声明自己的指令之前删除现有指令是避免任何冲突的好习惯。

编辑:您的应用程序也从其他 web.config 文件继承设置(有关更多信息,请参见此处)。这些可以是machine.config,根web.config等。这些文件也可以包含模块和处理程序声明。添加<remove>可帮助您避免与这些文件发生任何冲突。

于 2014-02-15T14:57:43.437 回答