it-swarm.com.de

Handler "ExtensionlessUrlHandler-Integrated-4.0" hat ein fehlerhaftes Modul "ManagedPipelineHandler" in seiner Modulliste

Um ehrlich zu sein, habe ich versucht, einen schmutzigen Trick auf IIS anzuwenden, und als ich dachte, dass ich damit durchkommen würde, wurde mir klar, dass mein Workaround nicht funktioniert. Folgendes habe ich versucht:

1) Ich habe eine ASP.NET-Anwendung, die Preloader-Klasse hat, die IProcessHostPreloadClient erbt und die umfangreiche Initialisierung in der Preload -Methodenimplementierung durchführt (Anwendung ist komplex und Teil von Dies ist ein enormes System. Es dauert ungefähr 2 Minuten, um Verbindungen zu allen erforderlichen Diensten herzustellen und einige Unity-Registrierungen vorab zu instanziieren.

2) Ich habe eine Menge Arbeit, die nach dem Herunterfahren der Anwendung (Abbestellen, Trennen, Entsorgen, ...) zu erledigen ist, und ich denke, der beste Ort dafür ist die * Application_End * -Methode in Global. asax.

3) Alles funktioniert einwandfrei, wenn ich Benutzeraktivität habe (die erste Anfrage nach dem Starten des Anwendungspools, der die oben genannte Webanwendung enthält, führt dazu, dass * Application_Start * aufgerufen wird und anschließend * Application_End * beim Stopp oder Recycling des Anwendungspools aufgerufen wird), jedoch Probleme tritt auf, wenn keine Benutzeraktivität vorliegt und die Anwendung nach 48 Stunden aktiv versucht, sich selbst neu zu starten (konfigurierte Anforderung). Da es keine Anfragen gab, wurde die Bewerbung offiziell nicht gestartet. Ergo kann nicht ordnungsgemäß angehalten werden, da * Application_End * nicht aufgerufen wird.

4) Nun kommt der unordentliche Teil ... Ich habe versucht, am Ende der Preload -Methode eine GET-Anforderung aus Code zu stellen, und es hat funktioniert. Aber diese Lösung erschien mir schlecht, obwohl sie funktionierte. Also habe ich viele Dinge ausprobiert, und das letzte, was ich versucht habe, war Folgendes:

SimpleWorkerRequest swr = new SimpleWorkerRequest(string.Empty, string.Empty, tw);
HttpRuntime.ProcessRequest(swr);

... und das hat seinen Zweck erfüllt. * Application_Start * wurde aufgerufen (die Antwort wurde überprüft, die Anmeldeseite enthielt die Anmeldeseite, die in der ursprünglichen Anforderung angezeigt werden sollte) und die Anwendung zum Herunterfahren des Anwendungspools wurde ordnungsgemäß beendet, indem die erforderliche Arbeit in * Application_End * ausgeführt wurde.

ABER

Nachdem die Anwendung auf diese Weise gestartet (vorgeladen und gestartet) wurde, passierte dies, als ich die Anwendung über einen Webbrowser erreichen wollte:

HTTP-Fehler 500.21 - Interner Serverfehler Handler "ExtensionlessUrlHandler-Integrated-4.0" hat ein fehlerhaftes Modul "ManagedPipelineHandler" in seiner Modulliste

Ich kann das nicht verstehen. Kann mir jemand sagen, warum das passiert und wie man es reparieren kann?

Wenn ich das nicht herausfinde, gehe ich zur ersten Lösung zurück (Senden der GET-Anfrage vom Code), aber dieses Problem wird mich stören, da ich nicht einmal weiß, was falsch ist.

229
Ivan Peric

Das Problem

Sie verwenden SimpleWorkerRequest in einem Szenario, für das es nicht entwickelt wurde. Sie verwenden es in IIS. Wenn Sie sich den vorherigen MSDN-Link ansehen (Schwerpunkt liegt bei mir):

Stellt eine einfache Implementierung der abstrakten Klasse HttpWorkerRequest bereit, die zum Hosten von ASP.NET-Anwendungen außerhalb einer IIS-Anwendung (Internet Information Services) verwendet werden kann. Sie können SimpleWorkerRequest direkt einsetzen oder erweitern.

Wenn Sie sich die MSDN-Dokumentation für den Namespace System.Web.Hosting ansehen (/ (SimpleWorkerRequest befindet sich in diesem Namespace)), werden Sie auch etwas Ähnliches wie oben sehen (wieder liegt der Schwerpunkt auf mir):

Der System.Web.Hosting-Namespace bietet die Funktionalität zum Hosten von ASP.NET-Anwendungen von verwalteten Anwendungen außerhalb von Microsoft Internet Information Services (IIS).

Die Lösung

Ich würde empfehlen, den Aufruf von SimpleWorkerRequest zu entfernen. Sie können stattdessen eine Microsoft-Lösung verwenden, um sicherzustellen, dass Ihre Website nach der Wiederverwendung automatisch gestartet wird. Was Sie brauchen, ist das Microsoft Application Initialization Module für IIS 7.5 . Es ist nicht kompliziert zu konfigurieren, aber Sie müssen die genauen Optionen verstehen. Deshalb würde ich auch die Application Initialization UI für IIS 7.5 empfehlen. Die Benutzeroberfläche wird von einem MSDN-Blogger geschrieben.

Was genau macht die Microsoft-Lösung? Es tut, was Sie versuchen - IIS sendet eine Get-Anfrage an Ihre Website, nachdem der Anwendungspool gestartet wurde.

22
chue x

Versuchen Sie, ASP.NET mit aspnet_regiis -i erneut zu registrieren. Es hat für mich funktioniert.

Ein wahrscheinlicher Pfad für .NET 4 (von der Eingabeaufforderung mit erhöhtem Befehl):

c:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_regiis.exe -i

http://forums.iis.net/p/1190643/2026401.aspx

637
danijelk

Wenn Sie diesen Fehler mit Windows 8/Windows Server 2012 und .NET 4.5 feststellen, befolgen Sie diese Anweisungen hier: http://www.britishdeveloper.co.uk/2013/01/handler-extensionlessurlhandler.html

Gehen Sie zu "Windows-Funktionen ein- oder ausschalten" Dann Internet Information Services Dann WWW-Dienste Dann Anwendungsentwicklungsfunktionen Aktivieren Sie dann ASP.NET 4.5

Dies funktionierte für mich (obwohl der Assistent und die Formulierung in Windows Server 2012 ein wenig anders sind, aber Sie werden es herausfinden). Nachdem dies gesagt wurde, warum dies nach der Installation alles durch den Web Platform Installer einschließlich aller Abhängigkeiten erforderlich ist, ist mir völlig unmöglich ...

155
Zach

Obwohl ich viele Ratschläge auf dieser Seite befolgt habe, gab es unter Windows Server 2012 immer noch Probleme. Durch die Installation von .NET Extensibility 4.5 wurde das Problem behoben:

Add Roles and Features > Server Roles > Web Server (IIS) > Web Server > Application Development > .NET Extensibility 4.5

52
Jonathan

Führen Sie einen dieser Befehle aus:

Für 32-Bit-Windows-Betriebssysteme:

c:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_regiis.exe -i

Für 64-Bit-Windows-Betriebssysteme:

c:\Windows\Microsoft.NET\Framework64\v4.0.30319\aspnet_regiis.exe -I
39
user3896335

Verwenden Sie für Windows 10/Windows Server 2016 den folgenden Befehl:

dism /online /enable-feature /featurename:IIS-ASPNET45 /all

Die vorgeschlagenen Antworten mit aspnet_regiis funktionieren nicht unter Windows 10 (Creators Update und höher) oder Windows Server 2016:

C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_regiis.exe -i
Microsoft (R) ASP.NET RegIIS Version 4.0.30319.0
Verwaltungsprogramm zum Installieren und Deinstallieren von ASP.NET auf dem lokalen Computer.
Copyright (C) Microsoft Corporation. Alle Rechte vorbehalten.
Starten Sie die Installation von ASP.NET (4.0.30319.0).
Diese Option wird in dieser Version des Betriebssystems nicht unterstützt. Administratoren sollten stattdessen ASP.NET 4.5 mit IIS8 über das Dialogfeld "Windows-Funktionen ein-/ausschalten", das Server Manager-Verwaltungstool oder das Befehlszeilenprogramm dism.exe installieren/deinstallieren. Weitere Informationen finden Sie unter http://go.Microsoft.com/fwlink/?LinkID=216771 .
Die Installation von ASP.NET (4.0.30319.0) ist abgeschlossen.

Interessanterweise erlaubte es das Dialogfeld "Windows-Funktionen ein-/ausschalten" nicht, .NET oder ASP.NET 4.6 zu deaktivieren, und nur der obige Befehl DISM funktionierte. Nicht sicher, ob der Dateiname richtig ist, aber es hat für mich funktioniert.

32
Bart Verkoeijen

Diese https://stackoverflow.com/a/13266763/1277458 funktioniert einwandfrei. Wenn Sie jedoch ein 64-Bit-Betriebssystem haben, verwenden Sie Framework64 anstelle von Framework im Pfad:

c:\Windows\Microsoft.NET\Framework64\v4.0.30319\aspnet_regiis.exe -i
24
Neshta

In meinem Fall (Windows 10 + IIS 10) musste ich "Windows-Funktionen ein- oder ausschalten" öffnen und dann Internetinformationsdienste> Internetdienste> Anwendungsentwicklungsfunktionen> auswählen und ASP.NET 4.6

13
Xaris Fytrakis

Dies zu einem eigenen Beitrag machen, weil ich stundenlang laufen musste.

Ich habe hier und anderswo vielleicht ein Dutzend ähnlicher Posts über dieses Problem und den aspnet_regiis-Fix gesehen. Sie arbeiteten nicht für mich und aspnet_regiis wirkte seltsam, listete nur Optionen auf usw. 

Wie oben von Benutzer ryan-anderson angegeben, können Sie keine .exe eingeben

Für diejenigen, die sich mit Dingen außerhalb von IIS auf dem Server nicht so wohl fühlen, finden Sie in einfachen Schritten folgende Schritte.

  1. Suchen Sie aspnet_regiis in einem Ordner, der diesem Pfad ähnelt. c:\Windows\Microsoft.NET\Framework\v4.0.30319 \ 

  2. Klicken Sie mit der rechten Maustaste auf die Eingabeaufforderung im Startmenü oder an einem beliebigen Ort und geben Sie an, dass er als Administrator ausgeführt werden soll. Die Verwendung der Windows-Funktion "Ausführen" funktioniert für mich einfach nicht oder nicht.

  3. Gehen Sie zurück zur Programmdatei aspnet_regiis. Klicken Sie mit der rechten Maustaste in den Befehl Eingabeaufforderung, oder kopieren Sie die Adresse in die Eingabeaufforderung. 

  4. Entfernen Sie, falls vorhanden, die .exe am Ende. Das ist der Schlüssel. Fügen Sie am Ende das -i (Leerzeichen minus Auge) hinzu. Eingeben.

Wenn Sie dies richtig gemacht haben, werden Sie sehen, dass es mit der Installation von asp.net beginnt und Sie dann darüber informiert, dass es erfolgreich war. 

6
shubniggurath

Ich weiß, das ist ein Oldie, aber ich dachte, ich könnte etwas Wert hinzufügen. Für diejenigen von uns, die Server Core außerhalb einer Domäne ausführen (Domänenmitglieder können einfach Server Manager remote ausführen, um Features/Rollen hinzuzufügen/zu entfernen), müssen Sie auf Befehlszeilen zurückgreifen.

PowerShell-Benutzer können "Install-WindowsFeature Web-Asp-Net45" eingeben.

Dies sollte der Verwendung des Server-Managers entsprechen.

4
jwdaigle

Ich wurde durch dieselbe Fehlermeldung herausgefordert, mit .net 4.7 installiert.

Die Lösung bestand darin, einem zuvor genannten Beitrag zu folgen, bei dem "Windows-Funktion ein- oder ausschalten" aktiviert war, in dem bereits ".NET Framework 4.7 Advanced Services" -> "ASP.NET 4.7" geprüft wurde.

Weiter unten in der Liste gibt es die "Internet Information Services" und die Unternote "Application Development Features" -> "ASP.NET 4.7", die ebenfalls überprüft werden müssen.

Wenn diese Option aktiviert ist, sind viele andere Funktionen aktiviert ... Ich habe einfach auf die Schaltfläche Ok gedrückt, und das Problem wurde behoben Screendump des Windows-Funktionsdialogs

3

Stellen Sie sicher, dass Sie Ihre application-site-Version von v2.0 auf v4.0 in IIS Manager eingestellt haben.

Anwendungspools> Ihre Anwendung> Erweiterte Einstellungen> .NET Framework-Version 

Danach installieren Sie Ihren ASP.NET

Für 32-Bit-Betriebssysteme (Windows):

C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_regiis.exe -i

Für 64-Bit-Betriebssysteme (Windows):

C:\Windows\Microsoft.NET\Framework64\v4.0.30319\aspnet_regiis.exe -i

Starten Sie Ihren application-site in IIS Manager neu und genießen Sie es.

3
Arsman Ahmad

Ich hatte dieses Problem und stellte fest, dass das Entfernen des folgenden Ordners auch bei der Nicht-Express-Edition hilfreich war. Express:

C:\Users\<user>\Documents\IISExpress

1
Thomas Bratt

Ich arbeite an Windows Server 2012. Die Funktion .NET Extensibility 4.5 ist aktiviert. WebDAVModule wurde entfernt. Ich habe immer noch den Fehler 500.21 auf der ASP.NET-Route '/ docs' erhalten.

Das Ändern von 'skipManagedModules' in false hat das Problem behoben.

<applicationInitialization doAppInitAfterRestart="true" skipManagedModules="false">
        <add initializationPage="/docs" />    
</applicationInitialization>

Dank an https://groups.google.com/forum/#!topic/bonobo-git-server/GbdMXdDO4tI

1
shemanov

Dieser Fehler ist mir letzte Woche aus dem Nichts passiert und hat Auswirkungen auf die vorhandenen Websites auf meinem Computer. Ich hatte kein Glück damit, die hier vorgestellten Vorschläge auszuprobieren. Schließlich entfernte ich WebDAV vollständig von IIS (Windows-Funktionen -> Internetinformationsdienste -> WWW-Dienste -> Allgemeine HTTP-Funktionen -> WebDAV-Publishing). Ich habe danach einen IIS Reset durchgeführt, um den Fehler zu beheben, und mein Fehler wurde schließlich behoben.

Ich kann nur vermuten, dass ein Windows-Update das Problem ausgelöst hat, aber ich bin mir nicht sicher.

1
pirsqua

Ich habe dieses Problem durch Hinzufügen von "Windows-Funktionen ein- oder ausschalten" gelöst Die Option ASP.NET 4.7

0
Edgar Chivichon

Dieses Problem ist in einer Webanwendung auf einem gemeinsam genutzten Hosting-Server aufgetreten. Offensichtlich hatte also kein direkter Zugang zu IIS, daher konnten viele der hier vorgeschlagenen Lösungen nicht angewendet werden. 

Auf dem Bedienfeld des Hosting-Anbieters habe ich die Fehlerprotokollierung für IIS und ASP.Net aktiviert. Und dann habe ich erfahren, dass der Fehler tatsächlich in einer fehlenden cshtml lag.

0
Dipendu Paul

Dies ist möglicherweise keine sinnvolle Lösung für OP, aber es handelt sich um dieselbe Fehlermeldung.

Wir hosten PHP - Seiten auf IIS8.5, wobei .NET 4.5 korrekt installiert ist.

Wir nutzen die Preload-Funktion, um sicherzustellen, dass unsere Anwendung immer auf die gesamte Bandbreite reagiert.

Nach einer Weile erhielten wir diesen Fehler zufällig.

In der web.config: ich setze skipManagedModules auf true, -> mach das nicht!

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
  <system.webServer>
<applicationInitialization skipManagedModules="false" doAppInitAfterRestart="true">
  <add initializationPage="/" />
</applicationInitialization>
...

Obwohl die Website PHP ist, wird das Routing zum Paging von den Modulen verwaltet !!!

0
Schwarzie2478

Ich bin auch auf dieses Problem gestoßen. Meine MVC4-App läuft auf einem Windows Server 2012 R2 mit IIS 8.5. Keine dieser veröffentlichten Lösungen funktionierte für mich ... Die Installation der fehlenden Frameworks durch IIS Features hätte das Problem lösen können, aber die Installation schlug fehl. 

Ich musste den Web Platform Installer verwenden und die folgenden Pakete installieren:

 enter image description here

0
Frank

Das Entfernen von WebDAV von meinem Server hat für mich zur Folge, dass die Anwendung bei Verwendung von PUT oder DELETE eine 503 Service Unavailable-Fehlermeldung zurückgibt. Daher habe ich sie erneut installiert. Ich habe auch versucht, .NET Framework 4.5 vollständig zu entfernen und neu zu installieren. Außerdem wurde eine erneute Registrierung wie vorgeschlagen versucht, jedoch ohne Erfolg.

Ich konnte dies durch Deaktivieren von WebDAV für den Anwendungspool individual beheben. Dadurch wurde der Fehler "fehlerhaftes Modul" bei Verwendung von PUT oder DELETE abgebrochen.

Deaktivieren Sie WebDAV für den einzelnen Anwendungspool:

  1. Klicken Sie auf den betroffenen Anwendungspool
  2. Suchen Sie WebDAV Authoring Tools in der Liste
  3. Klicken Sie hier, um es zu öffnen
  4. Klicken Sie oben rechts auf Disable WebDAV.

Ta daaaa!

Ich habe immer noch die Elemente zum Entfernen in meiner web.config-Datei gelassen.

 <system.webServer>
    <modules>
      <remove name="WebDAVModule"/>
    </modules>
    <handlers>
      <remove name="WebDAV" />
    </handlers>
 <system.webServer>

Unter diesem Link habe ich die Anweisungen gefunden, aber es ist nicht sehr klar.

0
Luke

Sie können dies beheben, indem Sie den Typ "ExtensionlessUrlHandler-Integrated-4.0" in iis in System.Web.DefaultHttpHandler ändern

0
user3661608