web-dev-qa-db-fra.com

IIS 7 renvoie l'erreur "section dupliquée définie" pour web.config sur un serveur mais pas sur un autre

J'ai 3 serveurs, qui exécutent tous Windows Web Server, .NET 4 et IIS7. La section de début de mon fichier web.config est la suivante:

<?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>

Cela fonctionne bien sur 2 des serveurs, mais l'un d'entre eux rapporte l'erreur:

Il y a une copie de la section 'system.web.extensions/scripting/scriptResourceHandler' définie 

contre la ligne:

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

Si je supprime cette ligne, il se plaint de la duplication de la ligne suivante et ainsi de suite jusqu'à ce que je supprime la quasi-totalité des sections de configuration.

Une idée de ce qui pourrait causer ça?


Modifier:

Il s'agissait d'une application .NET 3.5 mise à jour vers VS 2010 et .NET 4. .NET 2/3.5 et 4 sont installés sur les 3 serveurs. Les pools d'applications IIS ont tous été mis à jour vers .NET 4.

Dans les 3 serveurs, le fichier machine.config contient déjà certaines de ces sections web.config (comme l'indique la réponse de Damien), mais un seul des 3 se plaint de la duplication de ce dernier.

16
CodingWithSpike

Sur le serveur "en panne", votre pool d'applications exécute .NET 4.0. Le correctif consiste à configurer le pool d'applications pour qu'il s'exécute en tant que .NET 2.0.

Comme ASP.NET AJAX a été inventé après .NET 2.0, les définitions de configuration n’ont jamais été intégrées au fichier central web.config. Vous devez donc les déclarer site par site dans la plupart des cas. 4.0 nettoyé beaucoup de cette croupe, avec l'effet secondaire de casser les configurations par défaut pour les versions précédentes d'ASP.NET. 

25
Wyatt Barnett

Après avoir vérifié le machine.config sur ma machine, il semble que ces sections soient déjà définies. Ont-ils été supprimés du machine.config des autres ordinateurs (ou le site était-il en fait sous une version antérieure d'ASP.Net sur ces autres serveurs?)

Autant que je sache, ces sections sont définies par une installation par défaut d'ASP.NET 4 dans machine.config.

2

J'avais une erreur similaire concernant les sections dupliquées et je l'ai corrigée en la déployant sur un autre site Web sur IIS. 

Des tonnes d’anciennes applications ont été déployées sur ce site Web et je pense qu’il ya eu un conflit avec Web.config.

Je viens de supprimer le site Web, créer un nouveau et déployer là-bas et cela a fonctionné.

0
Juan