2014-02-15 130 views
0

下面是ASP.NET的默认配置的WebForms的web.config下IIS 7中指定的处理程序和模块(0.5)asp.net webforms模块和处理程序部分 - 是否需要删除?

当您添加自定义模块和处理程序,我想知道,如果删除名称=“定制模块“在添加模块条目之前是必需的。我无法找到有关是否需要移除的信息。我看到一些他们没有删除的例子。

为什么我问的原因是我依稀记得读一些有关模块的引用将保持每次添加相同的条目,而不必只有一个,最终失败。但我现在无法在任何地方找到它。

如果有人可以证实,这将非常感激。

<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

以在MSDN一看,却在<add>page,你会读到这样的:

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

基于此,为了重写指令<add>,它必须具有相同的动词/路径组合。如果它们不匹配,那么这两个指令都是有效的,这可能会导致冲突问题。

声明自己之前删除现有的指令是一个很好的做法,以避免任何冲突。

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

+0

但我不是在谈论具有两倍相同的组合。如果我必须添加自定义模块,是否需要先指定移除?我会确保它只在添加部分出现一次。 –

+0

之前添加删除只是*比对付*练习更安全。如果您100%确定没有具有相同名称的声明来创建冲突,则不会,您不需要在添加它之前将其删除。 –

+0

我更新了我的回答,为什么使用''是一个好主意,即使您只声明一次您自己的自定义处理程序。 –

相关问题