【问题标题】:asp.net webforms modules and handlers section - is remove required?asp.net webforms 模块和处理程序部分 - 是否需要删除?
【发布时间】:2014-02-15 13:55:33
【问题描述】:

下面是 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>

【问题讨论】:

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


    【解决方案1】:

    看一下MSDN,但在&lt;add&gt;page,你会读到这个:

    &lt;add&gt; 指令按自上而下的顺序处理。如果 两个或更多 &lt;add&gt; 子指令指定相同的动词/路径 组合,最终覆盖所有其他。

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

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

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

    【讨论】:

    • 但我不是在说有两次相同的组合。如果我必须添加自定义模块,是否需要先指定删除?我会确保它只在添加部分出现一次。
    • 在之前添加 remove 只是一种比抱歉更安全的做法。如果您 100% 确定没有同名的声明会造成冲突,那么不,您不需要在添加之前将其删除。
    • 我更新了我的答案,为什么即使您只声明一次自己的自定义处理程序,使用 &lt;remove&gt; 也是一个好主意。
    • 提到了什么样的冲突?你知道会发生什么吗?应用程序会不会立即运行或最终失败?
    • 你实际上不知道会发生什么。通常应用程序可以工作,当它尝试使用有冲突的处理程序时,它会出现错误,或者(不那么常见)它可以工作,但会出现不受欢迎的行为。
    猜你喜欢
    • 1970-01-01
    • 2014-05-29
    • 1970-01-01
    • 1970-01-01
    • 2013-10-05
    • 1970-01-01
    • 1970-01-01
    • 2021-12-16
    • 1970-01-01
    相关资源
    最近更新 更多