以下是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>
答案 0 :(得分:1)
查看MSDN,但在<add>
page中,您会看到:
<add>
指令以自上而下的顺序处理。如果 两个或多个<add>
子指令指定相同的动词/路径 组合,决赛压倒所有其他人。
基于此,为了覆盖<add>
指令,它必须具有相同的动词/路径组合。如果它们不匹配,则两个指令都处于活动状态,这可能会导致冲突问题。
在声明自己的指令之前删除现有指令是避免任何冲突的好方法。
编辑:您的应用程序也会从其他web.config文件继承设置(有关详细信息,请参阅here)。那些可以是machine.config
,根web.config
等。这些文件也可以包含模块和处理程序声明。添加<remove>
可帮助您避免与这些文件发生冲突。