it-swarm.com.de

Schritte zum Ermitteln der Ursache des Duplikatabschnitts von Web.Config

Symptome

  • In IIS 7 und Dot Net 2.0 Integrated App Pool: Durch Doppelklicken auf einen beliebigen Abschnitt Web.config wird ein Fehlerdialogfeld wie folgt angezeigt:

"There was an error while performing this operation.... Filename... web.config... Error: There is a duplicate..."

  • Beim Durchsuchen der URL wird Folgendes angezeigt: Interner Serverfehler "Http 500.19" .. Es gibt ein Duplikat ... 'system.web.extensions/scripting/scriptResourceHandler' Abschnitt definiert .... "

  • Wenn Sie die App von VS 2008 ausführen, wird ein "Debugging auf dem Webserver kann nicht gestartet werden ..." angezeigt.

Infrastruktur

  • Webserver: IIS 7 unter Windows 7 x64
  • ASP.Net MVC2
  • Anwendungspool: Dot Net 2.0 integriert
  • VS 2008

Dinge versucht

  • Überprüft, ob das Problem in anderen IIS - Anwendungsverzeichnissen auf demselben Computer aufgetreten ist.
  • Die Anwendung wurde in IIS entfernt und erneut hinzugefügt.
  • Auf frühere Versionen der Datei web.config zurückgesetzt.
  • Checkte eine letzte funktionierende Version des Quellcodes aus. Erstellen Sie die App neu, fügen Sie ein neues App-Verzeichnis hinzu und versuchen Sie, den Inhalt von web.config in IIS anzuzeigen.
  • Es wurde nach web.config-Dateien gesucht, die möglicherweise doppelte Abschnitte enthalten:
    • Inetpub-Wurzel.
    • "C:\Windows\Microsoft.NET\Framework\v2.0.50727\CONFIG\machine.config"
    • Der Unterordner "Views" der ASP.Net MVC-App.
  • Auscheckter Quellcode auf einem anderen Entwicklungscomputer. Setup IIS 7 App-Ordner. Kein Problem mit Web.config.

Frage

  • Wenn der Grund für diesen Fehler eine andere Datei web.config ist, wo sollte ich sonst suchen?
  • Gibt es andere Gründe für diese Symptome?
40
Pauly

Fügen Sie dies der Checkliste hinzu.

  • Stellen Sie sicher, dass die machine.config, die Sie überprüfen, aus demselben Dot Net-Framework stammt wie der Anwendungspool, unter dem Ihre Anwendung ausgeführt wird.

In meinem Fall wurden die Standardanwendungspools von Dot Net 2.0 in Dot Net 4.0 geändert. Dies hat die root machine.config in die Version 4.0 geändert. Diese Version enthält den Abschnitt "scriptResourceHandler" sowie weitere. Also die doppelte Abschnittswarnung.

35
Pauly

Wenn Sie DotNetOpenAuth library in Ihrer Website verwenden UND Ihre Website ein .NET 4.0 app ist, müssen Sie sicherstellen, dass diese Zeile NICHT in Ihrem web.config ist.

<section name="uri" type="System.Configuration.UriSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />

Ich habe DNOA mit NuGet installiert, und diese Zeile wurde automatisch in meine web.config-Datei eingefügt. Also musste ich es entfernen.

BTW Leute, wenn Sie den eingebauten (hella-crappy) Visual Studio-Entwicklungsserver (aka Cassini) verwenden, werden Sie dieses Problem nicht bekommen. Dieses Problem tritt nur auf, wenn Sie Ihren Code auf IIS7 express oder full IIS7 verschieben.

Löschen Sie also diese einzelne Zeile und machen Sie dann einen fröhlichen Tanz.

7
Pure.Krome

Die Lösung besteht darin, Ihre machine.config zu ändern.

  1. Verschieben Sie die Abschnitte in die machine.config für ASP.NET 2.0
  2. Oder Entfernen Sie die Abschnitte aus der machine.config für ASP.NET 4.0

Hier geben die Leute von www.asp.net eine mögliche Lösung an: http://www.asp.net/learn/whitepapers/aspnet4/breaking-changes

Schau mal :)

3
graffic

Ändern Sie in IIS 7 die Einstellung für Anwendungspools für den AppPool mit dem Namen "Classic .NET AppPool" auf V2.0. Klicken Sie dazu mit der rechten Maustaste auf den Classic .NET AppPool und wählen Sie "Basic Settings ..." . Setzen Sie dann die .NET Framework-Version auf V2.0.xxxxx zurück. Recyceln Sie den App-Pool, und starten Sie die Website erneut, und es sollte ordnungsgemäß funktionieren.

3
Mike

Mein Problem war ganz anders und das hängt davon ab, welcher Abschnitt ein Duplikat ist.

Zum Beispiel hatte ich einen doppelten Protokollierungskonfigurationsabschnitt, der das Ergebnis der übergeordneten und untergeordneten App zu sein scheint, die verschiedene Versionen der Microsoft Enterprise Library verwenden

1
Rob Allen

Diese MS-Problembehandlung kann auch helfen: http://support.Microsoft.com/kb/942055

1

Es könnte sich lohnen, die applicationHost.config-Datei zu öffnen:

C:\Windows\System32\inetsrv\config\applicationHost.config

Suchen Sie insbesondere nach <location>-Tags, die mit dem Sitenamen übereinstimmen (es können mehrere Einträge vorhanden sein), und prüfen Sie, ob dort doppelte scriptResourceHandler-Abschnitte deklariert sind. Ich würde auch den Inhalt von <location path=""> überprüfen.

0
Kev