asp.net webforms模块和处理程序部分 - 是否需要删除?

时间:2014-02-15 13:55:33

标签: asp.net webforms iis-7.5 httpmodule web.config-transform

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

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

我之所以要问的是,我依旧记得读到有关模块引用的内容,每次都会添加相同的条目而不是只有一条,最终会失败。但我现在无法找到它。

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

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

1 个答案:

答案 0 :(得分:1)

查看MSDN,但在<add> page中,您会看到:

  

<add>指令以自上而下的顺序处理。如果   两个或多个<add>子指令指定相同的动词/路径   组合,决赛压倒所有其他人。

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

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

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