IIS7-Bereitstellung - Duplizieren Sie den Abschnitt 'system.web.extensions / scripting / scriptResourceHandler'


209

Beim Versuch, eine .net 3.5-Website im Standard-App-Pool in IIS7 bereitzustellen, wobei der Framework-Abschnitt auf 4.0 festgelegt ist, wird die folgende Fehlermeldung angezeigt.

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

Das Kommentieren der beleidigenden Zeilen half auch nicht. Irgendwelche Hinweise darauf, was ich tun oder anschauen muss?

Antworten:


338

Wenn Sie auf einem IIS bereitstellen möchten, auf dem ein Anwendungspool in .net 4.0 ausgeführt wird, müssen Sie die Datei web.config bereinigen, die alle Abschnittdefinitionen enthält, die auf .net 3.5 verweisen. Der Grund dafür ist, dass diese Abschnittsdefinitionen bereits in der Root-Datei web.config in .NET 4.0 enthalten sind (siehe% windir% \ microsoft.net \ framework \ v4.0.30319 \ config \ machine.config), die das gesamte System enthalten. web.extensions bereits deklariert.

Eine weitere schnelle Lösung besteht darin, den Anwendungspool auf 2.0 zu setzen, so wie es auf Ihrem Entwicklungscomputer zu sein scheint.


Vielen Dank. Ich hatte diese
Problemumgehung

3
Vielen Dank für die Erklärung. Ich habe immer wieder die Lösung zum Entfernen eines Abschnitts aus der Konfigurationsdatei gesehen und mich gefragt: "Wie ist das Ausschneiden von Teilen Ihrer Konfigurationsdatei eine Lösung?"
Adam Bruss

13
MEIN APP POOL WURDE STATT 2.0 AUF 4.0 GESTELLT!
RolandoCC

1
Das war einfach, wechseln Sie diese ältere Seite zu einem 2.0 App Pool und Viola es funktioniert! Vielen Dank!
Mgrenier

1
Nur das Entfernen des .net 3.5-Abschnitts in der web.config hat für mich funktioniert
Anand

49

Die Lösung für mich bestand darin, die .NET Framework-Version in den Anwendungspools von v4.0 auf v2.0 für den Standard-App-Pool zu ändern:

Geben Sie hier die Bildbeschreibung ein


13
aaaund, wenn Sie tatsächlich .NET 4.0 in der Anwendung verwenden?
Michael Paulukonis

3
@MichaelPaulukonis Ich hatte dieses Problem, es stellte sich heraus, dass es eine web.config in der Root-Website gab, von der meine Website geerbt hat.
Guanome

@ MichaelPaulukonis, so wird pfft passieren!
DaveDev

Ich hatte dieses Problem, als meine App von 3.5 auf 4.0 aktualisiert wurde, der App-Pool korrekt aktualisiert wurde, aber die web.config veraltet war. Web.config hat versucht, alle Abschnittsgruppen hinzuzufügen, die seit 4.0 nativ sind und nicht explizit hinzugefügt werden müssen.
Drizin

48

Wenn Sie wie ich auf v4 abzielen müssen, aber nur mit .net 3.5 erstellen können, befolgen Sie die Anweisungen hier . Ersetzen Sie einfach in Ihrer web.config den gesamten Inhalt der <configSections>mit:

<configSections>
<sectionGroup name="system.web.extensions" type="System.Web.Configuration.SystemWebExtensionsSectionGroup, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35">
  <sectionGroup name="scripting" type="System.Web.Configuration.ScriptingSectionGroup, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35">
    <section name="scriptResourceHandler" type="System.Web.Configuration.ScriptingScriptResourceHandlerSection, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" requirePermission="false" allowDefinition="MachineToApplication"/>
    <sectionGroup name="webServices" type="System.Web.Configuration.ScriptingWebServicesSectionGroup, System.Web.Extensions,  Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35">
      <section name="jsonSerialization" type="System.Web.Configuration.ScriptingJsonSerializationSection, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" requirePermission="false" allowDefinition="Everywhere"/>
      <section name="profileService" type="System.Web.Configuration.ScriptingProfileServiceSection, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" requirePermission="false" allowDefinition="MachineToApplication"/>
      <section name="authenticationService" type="System.Web.Configuration.ScriptingAuthenticationServiceSection, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" requirePermission="false" allowDefinition="MachineToApplication"/>
      <section name="roleService" type="System.Web.Configuration.ScriptingRoleServiceSection, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" requirePermission="false" allowDefinition="MachineToApplication"/>
    </sectionGroup>
  </sectionGroup>
</sectionGroup>


3
Ihre war die einzige Lösung, die meinen Fehler behoben hat! Vielen Dank!
Devdatta Tengshe

1
Dies löste auch mein Problem. Der Server wurde mit IIS6 auf IIS7.5 aktualisiert. Auf IIS6 lief es unter v4.0, aber IIS7.5 benötigte diese web.config-Änderung.
Johna

Das war großartig.
Mzonerz

Der Wert in PublicKeyToken unterscheidet zwischen Groß- und Kleinschreibung (und sollte genau wie in der Antwort aussehen). Ich hatte meine in Großbuchstaben und das hat nicht funktioniert.
Björn

3

El problema es porque el pool por defecto esta en .net 4.0 Lösung: Geben Sie einen Administrator-IIS-Server ein, um die Werte der Gruppe zu ermitteln.! [Geben Sie hier die Bildbeschreibung ein] [1] und geben Sie die Bildbeschreibung ein! hier] [2]

Con esto pudes solucionar el problema al instalar la administracion central SharePoint 2010

----- über Google Translate -----

Das Problem ist, dass der Pool standardmäßig ist. Net 4.0-Lösung: Geben Sie den Server-IIS-Manager ein, um Werte auf der rechten Seite der Anwendungspools festzulegen.! [Bildbeschreibung hier eingeben] [1] und ändern Sie die Framework-Version! [Bildbeschreibung hier eingeben] [2]

Dies sollte das Problem bei der Installation der SharePoint-Zentraladministration 2010 lösen


22
Willkommen bei StackOverflow! Wenn Sie nicht über ausreichende Englischkenntnisse verfügen, führen Sie Ihre Antworten über Google Translate aus . Die Community verbessert alle seltsamen Sätze durch Bearbeiten. Vielen Dank für Ihre Antwort. ||||| über Google Translate ||||| Bienvenido ein StackOverflow! Es ist keine Dominanz von Inglés ausreichend, um Gunst zu erlangen, und Sie müssen eine Reise nach Google Translate durchführen . La comunidad mejorará frases extrañas en la edición. Gracias por su respuesta.
Andrew Kozak


3

Nekromantie.
Wenn Sie keine system.web.extensions-Konfigurationsabschnitte oder Handler- / Moduleinträge in Ihrer web.config haben, wird dieses Problem verursacht, weil Sie / jemand anderes ein VisualStudio-Projekt (2013/2015/2017) kopiert haben, während Sie es ausgeblendet haben -Dateien nicht versteckt .

Aus diesem Grund wird nicht nur .git kopiert, sondern auch .VSeine IIS-Express- Datei applicationhost.config , die auf web.config-Dateien auf Pfade verweist, die nicht vorhanden sind (oder schlimmer noch auf Pfade, die vorhanden sind, aber habe nicht den gleichen Inhalt) ...

Lösung:
Löschen Sie die Datei applicationhost.config im Ordner .VS.
Oder löschen Sie einfach den .VS-Ordner vollständig.
Visual Studio erstellt es neu.


Hervorragende Erklärung
William Bello

2

Meine App war eine ASP.Net3.5-App (unter Verwendung von Version 2 des Frameworks). Bei der Erstellung von ASP.Net3.5-Apps fügte Visual Studio der web.config automatisch scriptResourceHandler hinzu. Spätere Versionen von .Net fügen dies in die machine.config ein. Wenn Sie Ihre ASP.Net 3.5-App mit dem App-Pool der Version 4 ausführen (abhängig von der Installationsreihenfolge ist dies der Standard-App-Pool), wird dieser Fehler angezeigt.

Als ich zur Verwendung des App-Pools der Version 2.0 überging. Der Fehler ging weg. Ich musste mich dann mit dem Fehler befassen, wenn ich WCF .svc bediente:

HTTP-Fehler 404.17 - Nicht gefunden Der angeforderte Inhalt scheint ein Skript zu sein und wird vom statischen Datei-Handler nicht bereitgestellt

Nach einigen Nachforschungen musste ich anscheinend den WCF-Handler registrieren. Verwenden Sie die folgenden Schritte:

  1. Öffnen Sie die Visual Studio-Eingabeaufforderung (als Administrator).
  2. Navigieren Sie zu "C: \ Windows \ Microsoft.NET \ Framework \ v3.0 \ Windows Communication Foundation".
  3. Führen Sie servicemodelreg -i aus


1

In meinem Fall geschah dies, nachdem ich die gesamte Lösung (mit einer Erweiterung namens Target Framework Migrator) auf 4.6.2 konvertiert hatte, die Änderungen jedoch rückgängig gemacht und auf 3.5 zurückgegriffen hatte (die Lösung wurde von TFS versioniert). Um dies zu lösen, habe ich nur das problematische Projekt (für dessen Ausführung IIS Express verwendet wurde) in 4.6.2 und dann zurück in 3.5 konvertiert.


Vielen Dank. Es scheint, dass das Zurücksetzen und Rückgängigmachen von Änderungen die App nicht korrekt in den .NET 3.5-Status versetzt.
Iman

0

Eine andere Möglichkeit, dieses Problem zu vermeiden, das anderen helfen kann, besteht darin, Ihren .net-Webdienst nach Möglichkeit auf Version 4.0 oder höher zu erstellen.


0

In meinem Fall hatte ich zwei verschiedene Apps, die denselben App-Pool teilten. Der erste verwendete das .net4.5-Framwork und der neue verwendete 2.0. Als ich die zweite App in einen eigenen App-Pool geändert habe, funktioniert sie ohne Änderungen an der web.config.


0

Mein Vorsatz war irgendwie dumm.

  • Ich habe eine Kopie von .net 3.5 installiert

  • Erstellt einen weiteren App-Pool und wählt .net 3.5 aus (in der Dropdown-Liste steht 2.0.5077).

  • Meine Website wurde zu diesem App-Pool hinzugefügt

  • Die alten und neuen Pools wurden recycelt und die Site begann zu funktionieren.

Es kam darauf an, dass ich 3.5 nicht installiert hatte, obwohl die Windows-Funktionen zum Einschalten dies angaben und einen weiteren App-Pool zur Verwendung erstellten. Ich hoffe das hilft anderen.


0

In meinem Fall wollte ich die URL-Regel manuell hinzufügen und konnte den offensichtlichen Fehler nicht sehen (ich habe das <rules>Tag verpasst ):

falscher Code:

    <rewrite>
      <rule name="some rule" stopProcessing="true">
        <match url="some-pattenr/(.*)" />        
        <action type="Redirect" url="/some-ne-pattenr/{R:1}" />
      </rule>
    </rewrite>    

  </system.webServer>
</configuration>

richtiger Code (mit Regel-Tag):

    <rewrite>
      <rules>
        <rule name="some rule" stopProcessing="true">
          <match url="some-pattenr/(.*)" />        
          <action type="Redirect" url="/some-ne-pattenr/{R:1}" />
        </rule>
      </rules>
    </rewrite>

  </system.webServer>
</configuration>

0

Ich habe es gelöst und die folgenden Schritte ausgeführt:

  1. Ich habe eine neue Anwendungsgruppe in IIS erstellt.
  2. Öffnen Sie die erweiterten Einstellungen für die Site oder Webanwendung, bei der dieses Problem auftritt.
  3. Und legen Sie die Gruppe der neuen Anwendung fest.

Hier haben Sie die Bilder dieser Schritte:

Erstellen Sie eine neue Anwendungsgruppe

Nachdem Sie die Anwendungsgruppe erstellt haben

Legen Sie die Anwendungsgruppe in Ihrer Site oder Web-App fest


0

Diese Fehlermeldung scheint in verschiedenen Situationen aufzutreten.

In meinem Fall hatte ich zusätzlich zur Web.Config-Datei meiner Anwendung eine zusätzliche Web.Config-Datei im Stammordner (C: \ Inetpub \ www.root). Wahrscheinlich nach einigen Tests dort gelassen, hatte ich alles vergessen und konnte nicht herausfinden, was das Problem war.

Das Entfernen löste das Problem für mich.


0

Dies ist vielleicht die falsche Antwort für Sie. Dies war jedoch der erste Treffer bei Google, als ich versuchte, mein Problem zu lösen. Nachdem das gesagt worden ist...

Die gleiche Fehlermeldung trat auch bei mir auf, aber als ich versuchte, IIS Express über Visual Studio auszuführen.

Mein Problem war, dass ich meine applicationhost.config fälschlicherweise für TFS festgeschrieben habe . Später, als ich versuchte, das Projekt auf meinem Laptop auszuführen, nachdem ich die neuesten Commits erhalten hatte. Dann trat der Fehler auf.

Ich habe festgestellt, dass der Pfad des virtuellen Verzeichnisses falsch war.

<virtualDirectory path="/" physicalPath="C:\Users\giddan\Documents\Visual Studio 2015\Projects\ProjectName\DeV.ProjectName\DeV.ProjectName.Web" />

Hoffe, dass dies jemandem hilft!

Dies ist mein erster Beitrag, also sei sanft :)

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.