HTTP-Fehler 500.19 und Fehlercode: 0x80070021

219

Ich habe ein einfaches WebAPI-Build von Visual Studio 2013. Es funktioniert gut, wenn ich es von VS13 aus ausführe, aber wenn ich das Projekt in lokalem IIS kopiere, wird der folgende Fehler angezeigt.

HTTP-Fehler 500.19 - Interner Serverfehler Auf die angeforderte Seite kann nicht zugegriffen werden, da die zugehörigen Konfigurationsdaten für die Seite ungültig sind.

Detaillierte Fehlerinformationen:

Modul IIS Web Core

Benachrichtigung BeginRequest

Handler Noch nicht festgelegt

Fehlercode 0x80070021

Config Fehler Dieser Konfigurationsabschnitt kann nicht auf diesem Weg verwendet werden. Dies geschieht, wenn der Abschnitt auf übergeordneter Ebene gesperrt ist. Das Sperren erfolgt entweder standardmäßig (overrideModeDefault = "Deny") oder wird explizit durch ein Standort-Tag mit overrideMode = "Deny" oder dem alten allowOverride = "false" festgelegt.

Konfigurationsdatei \? \ C: \ inetpub \ wwwroot \ APITeslin \ web.config

Konfigurationsquelle:

36:   <system.webServer>  
37:     <handlers>  
38:       <remove name="ExtensionlessUrlHandler-Integrated-4.0" />
Umar Abbas
quelle
Dies ist wahrscheinlich die in IIS deaktivierte Windows-Authentifizierung, die jedoch in der web.config Ihrer Anwendung erforderlich ist.
SpaceBison
@SpaceBison Wie kann ich die Fensterauthentifizierung in IIS8 aktivieren?
Umar Abbas
Hier ist der Link meiner Webconfig-Datei. icopter.co.uk/Webconfig.txt
Umar Abbas
Haben Sie überlegt, ein URL-Umschreibemodul zu verwenden?

Antworten:

346

Habe genau den gleichen Fehler bekommen und bin auf diese Frage gekommen. Wie @SpaceBison in den Kommentaren erwähnt, beschreibt diese Antwort die Lösung - https://stackoverflow.com/a/12867753/404099 . Ich habe es zu spät entdeckt und es fehlen einige Schritte. Das hat bei mir funktioniert:

Windows Server 2012, IIS 8.5 . Sollte auch für andere Versionen funktionieren.

  • Gehen Sie zum Server-Manager und klicken Sie auf Rollen und Funktionen hinzufügen
  • Wählen Sie im Abschnitt Rollen: Webserver
    • Wählen Sie im Unterabschnitt "Sicherheit" alles aus (ich habe Digest, IP-Einschränkungen und URL-Autorisierung ausgeschlossen, da wir sie nicht verwenden).
    • Wählen Sie unter Anwendungsentwicklung die Option .NET Extensibility 4.5, ASP.NET 4.5 und beide ISAPI-Einträge
  • Wählen Sie im Abschnitt Funktionen Folgendes aus: NET 3.5, .NET 4.5, ASP.NET 4.5
  • Wählen Sie im Abschnitt Webserver: Webserver (alle), Verwaltungstools (IIS-Verwaltungskonsole und Verwaltungsdienst), Windows-Authentifizierung - falls Sie einen davon verwenden
Ilia Barahovski
quelle
13
Alles, was ich hinzufügen musste, waren die .NET 4.5-Elemente im Abschnitt AppDev und im Abschnitt Funktionen. Das Erweiterungselement erzwang auch die 2 ISAPI-Einträge.
Bill
Diese Schritte helfen mir bei Problemen. Vielen Dank.
Psulek
Endlich eine Lösung, um meine Beschwerden zu lösen. Danke, es macht Sinn und ist einfach genug. Es scheint heutzutage immer Features und Rollen zu fehlen ...
Alexandru
Der ServerManager ist in Windows 7 Home nicht verfügbar. Wie kann ich das Problem beheben?
Knocte
1
@knocte - In Windows 7 können Sie "Programm deinstallieren oder ändern" eingeben und dann auf "Windows-Funktionen ein- oder ausschalten" klicken. Dies ist nicht dasselbe wie der Server-Manager, aber Sie können IIS und verwandte Funktionen auf diese Weise installieren.
Ilia Barahovski
122

Ich habe diesen Fehler beim Versuch, einen WCF-Dienst in einer leeren ASP.NET-Anwendung zu hosten, erhalten. Die gesamte Lösung verwendete die .NET 4.5-Plattform unter IIS 8.5 unter Windows 8.1. Das Gotcha war zu

  1. Öffnen Sie "Windows-Funktionen ein- oder ausschalten".

  2. Wechseln Sie zum Abschnitt WCF unter ASP.NET 4.5 Advanced Services

  3. Überprüfen Sie die HTTP-Aktivierung.

  4. Sie werden aufgefordert, das System neu zu starten.

    Bildschirmfoto

Dies sollte das HTTP 500.19 beheben!

EDIT 11-FEB-2016 Ich habe gerade ein Problem mit Windows 10 Pro, IIS 10, erhalten. Diesmal war es ein HTTP 404.0. Das Update ist immer noch dasselbe. Aktivieren Sie "HTTP-Aktivierung" unter Windows-Funktionen -> Erweiterte Dienste von .NET Framework 4.6 -> WCF-Dienste -> HTTP-Aktivierung

Sudhanshu Mishra
quelle
Vielen Dank @dotnetguy! :-) es hat auch bei mir funktioniert. Der Fehler trat auf, als ich versuchte, Web API 2.2 und MVC in einer leeren ASP.NET-Anwendung zu hosten.
Gurusinghe
@dotnetguy Genau das hat mir geholfen, nachdem ich IIS nicht mit meiner lokalen MVC-Anwendung in Visual Studio zum Laufen bringen konnte. Vielen Dank. HTTP-Aktivierung ist es!
Seidenfeuer
@ Silkfire froh, dass es geholfen hat!
Sudhanshu Mishra
@dotnetguy Danke
Heemanshu Bhalla
@dotnetguy Habe genau das gleiche Problem und das hat es gelöst! Vielen Dank! Du bist wirklich ein .Net-Typ! : D
Rian
47

Ich hatte auch das gleiche Problem, aber nach vielen Stunden Brainstorming mit IIS und Google. Ich habe die Lösung herausgefunden. Dieser Fehler ist darauf zurückzuführen, dass einige Einstellungen in IIS deaktiviert sind applicationHost.config.

Nachfolgend sind die Schritte zur Lösung aufgeführt:

  1. Gehe zu C:\Windows\System32\inetsrv\config\applicationHost.configund öffne im Notizblock
  2. Ändern Sie den folgenden Schlüsselwert in

    • <section name="handlers" overrideModeDefault="Deny" /> Ändern Sie diesen Wert von "Verweigern" in "Zulassen".

    • <section name="modules" allowDefinition="MachineToApplication" overrideModeDefault="Deny" /> Ändern Sie diesen Wert von "Verweigern" in "Zulassen".

Es hat bei mir funktioniert.

SeeTheC
quelle
2
Danke dir. Nach diesen Schritten trat der nächste Fehler auf. Ich könnte es wie hier beschrieben lösen: stackoverflow.com/a/30594003/434742
Jenny O'Reilly
31

Wenn Sie IIS zum ersten Mal auf diesem Computer ausführen, sollten Sie versuchen, das ASP.NET IIS-Registrierungstool (aspnet_regiis.exe) auszuführen.

So geht's: Wenn Sie .net Framework v4 verwenden, öffnen Sie die Eingabeaufforderung als Administrator und ändern Sie das Verzeichnis in Ihren .net Framework-Basisordner mit:

CD C:\Windows\Microsoft.NET\Framework\v4.0.30319

Wenn Sie einen 64-Bit-Computer verwenden, verwenden Sie:

CD C:\Windows\Microsoft.NET\Framework64\v4.0.30319

Wenn Sie erfolgreich zum entsprechenden Verzeichnis navigiert haben, führen Sie das ASP.NET IIS-Registrierungstool folgendermaßen aus:

aspnet_regiis -i

Wenn Sie eine andere .NET Framework-Version verwenden, ersetzen Sie diese einfach durch v4.0.30319den entsprechenden Ordnernamen.

Hoffe das hilft.

Ibrahim Dauda
quelle
Ich versuche, zwei verschiedene VS-Projekte auf meinem iis-Server (virtuelle Maschine) auszuführen. man arbeitet, man nicht ... Das Obige half, das erste zum Laufen zu bringen; Gibt es einen Grund, warum der 2. nicht funktionieren sollte?
Joseph
7
Ich habe diese Methode in der Vergangenheit verwendet, aber aspnet_regiis wird unter Windows 8.1 nicht mehr unterstützt. Um 4.5 zu registrieren, verwenden Sie Programme und Funktionen> Windows-Funktionen ein- oder ausschalten> Informationsinformationsdienste> World Wide Web Services> Anwendungsentwicklungsfunktionen> Überprüfen Sie ASP.NET 4.5 und alles, was Sie sonst noch benötigen.
Masterwok
1
Dies muss als Administrator ausgeführt werden (Rechtsklick auf das Symbol cmd.exe -> Als Administrator ausführen), und selbst wenn es Fehler während des Vorgangs erkennen kann (und eine Protokolldatei erstellt), hat es bei mir funktioniert!
Knocte
2
Für IIS 8.5 unter Windows 8.1 (oder Windows Server 2012) funktioniert dies nicht. Ich habe die folgende Eingabeaufforderung erhalten: C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319> aspnet_regiis.exe -i Starten Sie die Installation von ASP.NET (4.0.30319.33440). Diese Option wird von 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 Befehlszeilentool dism.exe installieren / deinstallieren.
Sudhanshu Mishra
Vielen Dank!! Es funktioniert für mich mit IIS 10 und Windows 10 :)
Víctor Beltrán
22

Ich habe dies folgendermaßen gelöst:

WebServer(ISS)->WebServer->Application Development
add .NET Extensibility 3.5
add .NET Extensibility 4.5
add ASP.NET 4.5
add ISAPI Extensions
add ISAPI Filters

Geben Sie hier die Bildbeschreibung ein

GIOESCOM
quelle
10

Unter Windows 8.1, IIS 8.5 bestand die Lösung für mich darin, 4.5 über die Systemsteuerung zu registrieren:

Programme und Funktionen> Windows-Funktionen aktivieren oder deaktivieren> Informationsinformationsdienste> World Wide Web Services> Anwendungsentwicklungsfunktionen> Wählen Sie ASP.NET 4.5 aus

OK klicken.

Jon
quelle
3
Unter Windows 10 standen "ASP", "ASP.NET.35." Und "ASP.NET 4.6" zur Auswahl. Das Überprüfen von 4.6 hat bei mir funktioniert. Vielen Dank!
PeterVermont
Ich denke, dies ist die präziseste und leicht verständliche Antwort.
Themenfeld
4

Wie der Fehler anzeigt - "Dies geschieht, wenn der Abschnitt auf übergeordneter Ebene gesperrt ist". Um den Abschnitt zu entsperren, können Sie appcmd.exe verwenden und den folgenden Befehl ausführen:

%windir%\system32\inetsrv\appcmd.exe unlock config -section:system.webServer/handlers -commitpath:apphost

Weitere Informationen zum Sperren von Abschnitten und zum Kontext einer übergeordneten Konfiguration finden Sie in der IIS-Dokumentation .

Taras Alenin
quelle
4

In unserem Fall hatten wir einige Tage mit diesem Fehler zu kämpfen. Es stellt sich heraus, dass in der Systemsteuerung Programme die Windows-Funktionen ein- oder ausschalten.

Wir haben Internetinformationsdienste, World Wide Web Services und Anwendungsentwicklungsfunktionen ausgewählt und dort die mit unserer Entwicklungsumgebung verbundenen Funktionen überprüft. Zum Beispiel: ASP.NET 4.6. .NET-Erweiterbarkeit 4.6 usw.

Es klappt!

Javier Livio
quelle
1
Dies hat auch mein Problem behoben. Das Problem war also letztendlich, dass ich nach dem Hinzufügen von IIS zu meinem lokalen Computer die richtigen Funktionen nicht aktiviert habe. Dies löste es. Danke.
jbooker
3

Versuchen Sie, die relevanten IIS (7.5) -Konfigurationseinstellungen auf Serverebene wie folgt zu entsperren:

  1. Öffnen Sie den IIS-Manager
  2. Wählen Sie den Server aus im Bereich Verbindungen aus
  3. Öffnen Sie den Konfigurationseditor im Hauptfenster
  4. Wählen Sie in der Dropdown-Liste Abschnitte den zu entsperrenden Abschnitt aus, z. B. system.webServer> defaultPath
  5. Klicken Attribut entsperren im rechten Bereich auf entsperren
  6. Wiederholen Sie diesen Vorgang für alle anderen Einstellungen, die Sie entsperren müssen
  7. IIS neu starten (optional) - Wählen Sie den Server im Bereich "Verbindungen" aus und klicken Sie im Bereich "Aktionen" auf "Neu starten"
Chris
quelle
Dies ist fast hilfreich, aber unter IIS 7 gibt es keinen "defaultPath" unter system.webServer
Djorge
Damit meint er, wenn Sie die Windows-Authentifizierung aktualisieren möchten, finden Sie sie im Pfad system.webServer -> Sicherheit -> Authentifizierung.
Mido
3

In meinem Fall gab es Regeln für das IIS URL Rewrite- Modul, aber ich hatte dieses Modul nicht installiert. Sie sollten in Ihrer web.config überprüfen, ob Module enthalten, aber nicht installiert sind.

HasanG
quelle
1
Ich habe gerade alles andere installiert, aber immer noch nicht zum Laufen gebracht. Dann habe ich gerade das URL Rewrite-Modul installiert und es zum Laufen gebracht! Vielen Dank!
Vitox
Wenn das URL Rewrite-Modul fehlt, lautet der Fehlercode nicht 0x80070021.
Lex Li
3

Wenn es sich um Windows 10 handelt, öffnen Sie die Powershell als Administrator und führen Sie den folgenden Befehl aus:

dism /online /enable-feature /all /featurename:IIS-ASPNET45
user2912206
quelle
1

In Ihrer web.config wird beschrieben, dass Sie die Formularauthentifizierung verwenden. Stellen Sie sicher, dass Sie die Formularauthentifizierung aktivieren und die anonyme Authentifizierung in IIS im Menü Authentifizierung für die in IIS ausgeführte Website deaktivieren .

SpaceBison
quelle
0

Bitte <staticContent />Zeile und löschte es aus der web.config.

Erdogan
quelle
0

Nun, wir verwenden Amazon Web Services und versuchen daher, Skripte und Programme zu verwenden, um dieses Problem zu lösen. Also war ich auf der Suche nach einem Kommandozeilen-Tool. Also habe ich zuerst den Trick des Laufens ausprobiert

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

Aber weil ich einen Cloud-basierten Windows Server 2012 verwende, hat es sich beschwert

This option is not supported on this version of the operating system. Administrators should instead install/uninstall ASP.NET 4.5 with IIS8 using the "Turn Windows Features On/Off" dialog, the Server Manager management tool, or the dism.exe command line tool. For more details please see http://go.microsoft.com/fwlink/?LinkID=216771.

und ich habe gegoogelt und die offizielle Microsoft-Support-Seite KB2736284 gefunden . Es gibt also ein Kommandozeilen-Tool dism.exe. Also habe ich folgendes versucht

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

Aber es beschwerte sich und gab eine Liste von Funktionsnamen zum Ausprobieren, also versuchte ich sie einzeln und testete meine WebAPI-Webseite nach jeder und es funktionierte nach der untersten in der Liste.

dism /online /enable-feature /featurename:IIS-ApplicationDevelopment
dism /online /enable-feature /featurename:IIS-ISAPIFilter 
dism /online /enable-feature /featurename:IIS-ISAPIExtensions 
dism /online /enable-feature /featurename:IIS-NetFxExtensibility45 

Jetzt kann ich zu meiner WebAPI-Site navigieren und die API-Informationen anzeigen. Das sollte ein paar Leuten helfen. [Ich bin jedoch noch nicht ganz aus dem Wald und kann die Website nicht von außerhalb der Box erreichen. Ich arbeite noch daran.]

Außerdem habe ich einige frühere Schritte ausgeführt, um den Antworten anderer Personen zu folgen. Ich kann bestätigen, dass die folgende Feature-Delegierung geändert werden muss (obwohl ich ein Befehlszeilen-Tool für diese finden möchte).

In Feature delegation

Change 
'Handler Mappings' from Read Only to Read/Write

Change 
'Modules' from Read Only to Read/Write

Change 
'SSL Settings' from Read Only to Read/Write
S Meaden
quelle
-1

Überprüfen Sie, ob der IIS-Server die Funktion zum Umschreiben von URLs installiert hat.
Wenn es nicht installiert ist, stellen Sie sicher, dass Ihre web.config-Datei nicht über die Konfiguration zum Umschreiben der URL verfügt

<!-- Make sure don't have below config, if server have not installed url rewrite feature. -->
<rewrite>
  <rules>
    <rule name="Fail bad requests">
      <match url=".*"/> ...

Einige Zeit, in der wir die Konfiguration vom Legacy-Server kopiert und sofort auf einem brandneuen Server bereitgestellt haben, können solche 500 Probleme auftreten.

Frank Myat Do.
quelle
Wenn URL Rewrite fehlt, lautet der Fehlercode nicht 0x80070021.
Lex Li
-3

Die Lösung, die für mich funktioniert hat, bestand darin, meine aktuelle Web.config zu löschen und eine neue hinzuzufügen. Das hat das Problem für mich gelöst

Pheko Moroke
quelle
6
Der Rücktritt von meinem Job ist einfacher als das Erstellen einer neuen web.config. Versuchen Sie niemals, dies zu tun.
Shadi Namrouti