2011-09-07 17 views
16

Ho 3 server, ognuno dei quali esegue Windows Web Server, .NET 4 e IIS7. La sezione iniziale del mio file web.config è:IIS 7 genera l'errore "sezione definita duplicata" per web.config su un server, ma non un altro

<?xml version="1.0"?> 
<configuration xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0"> 
    <configSections> 
    <section name="loggingConfiguration" type="Microsoft.Practices.EnterpriseLibrary.Logging.Configuration.LoggingSettings, Microsoft.Practices.EnterpriseLibrary.Logging, Version=4.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" /> 
    <section name="unity" type="Microsoft.Practices.Unity.Configuration.UnityConfigurationSection, Microsoft.Practices.Unity.Configuration, Version=2.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" /> 
    <section name="cachingConfiguration" type="Microsoft.Practices.EnterpriseLibrary.Caching.Configuration.CacheManagerSettings, Microsoft.Practices.EnterpriseLibrary.Caching, Version=4.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" /> 
    <sectionGroup name="system.web.extensions" type="System.Web.Configuration.SystemWebExtensionsSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"> 
     <sectionGroup name="scripting" type="System.Web.Configuration.ScriptingSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"> 
     <section name="scriptResourceHandler" type="System.Web.Configuration.ScriptingScriptResourceHandlerSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication" /> 
     <sectionGroup name="webServices" type="System.Web.Configuration.ScriptingWebServicesSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"> 
      <section name="jsonSerialization" type="System.Web.Configuration.ScriptingJsonSerializationSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="Everywhere" /> 
      <section name="profileService" type="System.Web.Configuration.ScriptingProfileServiceSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication" /> 
      <section name="authenticationService" type="System.Web.Configuration.ScriptingAuthenticationServiceSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication" /> 
      <section name="roleService" type="System.Web.Configuration.ScriptingRoleServiceSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication" /> 
     </sectionGroup> 
     </sectionGroup> 
    </sectionGroup> 
    </configSections> 

Questo funziona bene su 2 dei server, ma uno di loro segnala l'errore:

There is a duplicate 'system.web.extensions/scripting/scriptResourceHandler' section defined

contro la linea:

<section name="scriptResourceHandler" type="System.Web.Configuration.ScriptingScriptResourceHandlerSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication" /> 

Se rimuovo quella linea singola, si lamenta di un duplicato della riga successiva, e così via fino a rimuovere quasi tutte le sezioni di configurazione.

Qualche idea di cosa potrebbe causare questo?


Edit:

Questa era un'applicazione .NET 3.5 che è stato aggiornato per VS 2010 e .NET 4. Tutti e 3 i server hanno NET 2/3.5 e 4 installato. I pool di app di IIS sono stati tutti aggiornati a .NET 4.

In tutti e 3 i server, il file machine.config contiene già alcune di queste sezioni web.config (come menziona la risposta di Damien), ma solo 1 delle 3 si lamenta di essere duplicato.

risposta

2

Dopo aver controllato il machine.config sulla mia macchina, sembra che queste sezioni siano già state definite. Sono stati rimossi dalle altre macchine 'machine.config (O il sito, infatti, funzionava con una versione precedente di ASP.Net su questi altri server?)

Per quanto posso vedere, queste sezioni sono definite da un'installazione predefinita di ASP.NET 4 all'interno di machine.config.

+0

Interessante. Si trattava infatti di un'app .NET 3.5 che è stata aggiornata a .NET 4 e tutti e 3 i server eseguivano .NET 2/3.5. Quindi è stato installato .NET 4 e i pool di app sono stati aggiornati per l'utilizzo di .NET 4. Non so perché tali sezioni non si trovino nel machine.config degli altri 2 server dopo l'installazione di .NET 4 ... hmmm. .. – CodingWithSpike

25

Sul server "interrotto" il pool di applicazioni esegue .NET 4.0. La correzione consiste nell'impostare il pool di applicazioni da eseguire come .NET 2.0.

Poiché ASP.NET AJAX è stato inventato dopo .NET 2.0, le definizioni di configurazione non sono mai state inserite nel web.config centrale, quindi nella maggior parte dei casi è stato necessario dichiararle per sito. 4.0 ha ripulito un sacco di questo cruft, con l'effetto collaterale di rompere le configurazioni predefinite per le precedenti versioni di ASP.NET.

+0

Tutte le 3 macchine hanno i loro pool di app impostati su .net 4 (compresi i 2 che funzionano) – CodingWithSpike

+0

questo ha funzionato per me. Grazie!! – killerbarney

+0

Bello grazie, anche se "Poiché AJAX è stato inventato dopo .NET 2.0" non è davvero una dichiarazione accurata! –

0

Stavo ricevendo un errore simile riguardo alle sezioni duplicate e l'ho risolto distribuendo su un sito Web diverso su IIS.

Avevo un sacco di vecchie applicazioni distribuite su quel sito Web e penso che ci fosse qualche conflitto con web.config.

Ho appena eliminato il sito Web, ne creo uno nuovo e distribuito lì e ha funzionato.

Problemi correlati