2014-02-15 61 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

我更新了我的回答,爲什麼使用''是一個好主意,即使您只聲明一次您自己的自定義處理程序。 –

相關問題