web-dev-qa-db-de.com

IIS 7 wirft den Fehler "Duplizieren des Abschnitts definiert" für web.config auf einem Server, aber nicht auf einem anderen

Ich habe 3 Server, auf denen alle Windows Web Server, .NET 4 und IIS7 ausgeführt werden. Der Anfangsteil meiner Datei web.config lautet:

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

Dies funktioniert problemlos auf zwei Servern, aber einer von ihnen meldet den Fehler:

Es wurde ein doppelter Abschnitt 'system.web.extensions/scripting/scriptResourceHandler' definiert 

gegen die Linie:

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

Wenn ich diese einzelne Zeile entferne, beschwert sie sich über ein Duplikat der nächsten Zeile usw., bis ich fast alle Konfigurationsabschnitte entferne.

Irgendeine Idee, was würde das bewirken?


Bearbeiten:

Dies war eine .NET 3.5-Anwendung, die auf VS 2010 und .NET 4 aktualisiert wurde. Auf allen 3 Servern sind .NET 2/3.5 und 4 installiert. Die App-Pools IIS wurden alle auf .NET 4 aktualisiert.

In allen 3 Servern sind in der machine.config-Datei bereits einige dieser Abschnitte von web.config definiert (wie Damiens Antwort erwähnt), aber nur einer der drei Server beschwert sich über die Duplizierung.

16
CodingWithSpike

Auf dem "defekten" Server wird .NET 4.0 auf Ihrem App-Pool ausgeführt. Das Update besteht darin, den App-Pool so einzustellen, dass er als .NET 2.0 ausgeführt wird.

Da ASP.NET AJAX nach .NET 2.0 erfunden wurde, wurden die Konfigurationsdefinitionen nie in die zentrale web.config-Datei aufgenommen, sodass Sie sie in den meisten Fällen pro Site deklarieren mussten. 4.0 bereinigte viele dieser Crufts, mit dem Nebeneffekt, dass die Standardkonfigurationen für vorherige Versionen von ASP.NET gebrochen wurden. 

25
Wyatt Barnett

Nachdem Sie den machine.config auf meinem Computer überprüft haben, scheint es, dass diese Abschnitte bereits definiert sind. Wurden sie aus dem machine.config der anderen Maschinen entfernt (oder wurde die Site tatsächlich auf diesen anderen Servern unter einer früheren Version von ASP.Net ausgeführt?)

Soweit ich sehen kann, werden diese Abschnitte durch eine Standardinstallation von ASP.NET 4 innerhalb von machine.config definiert.

Ich habe einen ähnlichen Fehler in Bezug auf duplizierte Abschnitte erhalten und ihn bei der Bereitstellung auf einer anderen Website in IIS behoben. 

Ich hatte viele alte Anwendungen auf dieser Website installiert und ich glaube, es gab einen Konflikt mit der web.config.

Ich habe gerade die Website gelöscht, eine neue erstellt und dort bereitgestellt und es hat funktioniert.

0
Juan