Freigeben über


Behandeln von 4xx- und 5xx-HTTP-Fehlern

Dieser Artikel enthält Problembehandlungsschritte zum Beheben von 4xx- und 5xx HTTP-Statuscodefehlern in Internetinformationsdienste (IIS). 4xx-Statuscodes deuten auf ein Problem auf der Clientseite hin, während 5xx-Statuscodes ein Problem auf der Serverseite angeben. Die Anleitung hilft Ihnen, die Ursache dieser Fehler zu identifizieren und effektiv zu beheben.

Identifizieren von 4xx-Fehlern

Die 4xx HTTP-Statuscodes deuten darauf hin, dass aufgrund eines clientseitigen Problems ein Fehler aufgetreten ist. Beispielsweise hat der Clientbrowser möglicherweise eine Seite angefordert, die nicht vorhanden ist, oder der Clientbrowser hat möglicherweise keine gültigen Authentifizierungsinformationen bereitgestellt.

Um 4xx Fehler zu identifizieren, untersuchen Sie die IIS-Protokolle und die HTTPERR-Protokolle:

  • Der HTTP-Statuscode wird in den IIS-Protokollen aufgezeichnet. Diese Datei wird in der Regel in C:\inetpub\logs\Logfiles gespeichert, kann aber über die IIS-Protokollierung im IIS-Manager konfiguriert werden.

  • Ein 4xx-Fehlercode kann vom HTTP.sys Kerneltreiber generiert werden. Dies bedeutet, dass diese Anforderungen iis möglicherweise nicht erreichen und daher nicht in IIS-Protokollen protokolliert werden. HTTP.sys protokolliert diese Fehler in separaten Dateien, die als HTTPERR-Protokolle bezeichnet werden. Diese Datei wird in der Regel in C:\Windows\System32\LogFiles\HTTPERR gespeichert, kann aber über die Registrierung HKEY\LOCAL\MACHINE\System\CurrentControlSet\Services\HTTP\Parameters\ErrorLoggingDirkonfiguriert werden.

  • Eine Möglichkeit, zu bestätigen, ob die 4xx-Antwort von HTTP.sys stammt, besteht darin, eine HAR-Ablaufverfolgungsdatei auf dem Client zu sammeln und nach dem Antwortheader Microsoft-HttpApi/2.0 zu suchen.

    Um eine HAR-Ablaufverfolgungsdatei zu erfassen, die die Interaktion Ihres Browsers mit der Website aufzeichnet, befolgen Sie die Anweisungen in "Erfassen einer Browserablaufverfolgung für die Problembehandlung".

Überprüfen der IIS-Protokolle

Wenn Sie Fehler in den IIS-Protokollen finden, notieren Sie sich den Statuscode (sc-status) und den Unterstatuscode (sc-substatus) und weitere Informationen unter HTTP-Statuscodeübersicht .

Um weitere Informationen zum Statuscode zu erhalten und zu verstehen, welches Modul oder Handler 4xx-Fehler zurückgegeben hat, sammeln Sie FREB-Protokolle (Failed Request Trace) um den Zeitpunkt, zu dem das Problem aufgetreten ist, indem Sie eine FREB-Regel konfigurieren, die durch den Statuscode ausgelöst wird, der in den IIS-Protokollen angezeigt wird.

Untersuchen der HTTPERR-Protokolle

Wenn Sie Fehler in den HTTPERR-Protokollen finden, notieren Sie sich den Grund (s-reason) und weitere Informationen unter "Typen von Fehlern", die von der HTTP-Server-API protokolliert werden.

Identifizieren von 5xx-Fehlern

Die 5xx HTTP-Statuscodes deuten darauf hin, dass der Server die Anforderung nicht abschließen konnte, da beim Verarbeiten der Anforderung ein Fehler auf dem Server aufgetreten ist. Verwenden Sie die folgenden Anweisungen basierend auf Ihrem Anwendungstyp.

500 Fehler in klassischem ASP

Wenn ein 500-Fehler in klassischem ASP auftritt, überprüfen Sie den Fehlercode oder die Fehlermeldung in der cs-uri-query Abfrage der IIS-Protokolle.

Weitere Informationen erhalten Sie, um Fehleranforderungsablaufverfolgungsprotokolle (Failed Request Trace, FREB) für die 500 Fehler zu erfassen und zu untersuchen.

500 Fehler in allgemeinem IIS

Wenn ein 500-Fehler im allgemeinen IIS auftritt, überprüfen Sie die IIS-Protokolle, notieren Sie sich den Statuscode (sc-status) und den Unterstatuscode (sc-substatus) und weitere Informationen zum Fehler unter HTTP-Statuscodeübersicht .

Aktivieren Sie detaillierte Fehlermeldungen, falls möglich, um weitere Details zu erhalten. Führen Sie die folgenden Schritte aus, um detaillierte Fehlermeldungen zu aktivieren:

  1. Öffnen Sie das Befehlsfenster ausführen .

  2. Starten Sie inetmgr.

  3. Erweitern Sie im IIS-Manager unter dem Bereich "Verbindungen " auf der linken Seite der Konsole den Computernamen, erweitern Sie "Websites", und wählen Sie dann die Zielwebsite aus.

    Screenshot der Zielwebsite im IIS-Manager.

  4. Doppelklicken Sie im mittleren Bereich auf das Symbol "Fehlerseiten ".

    Screenshot des Symbols

  5. Wählen Sie auf der rechten Seite im Bereich "Aktionen " die Option "Featureeinstellungen bearbeiten" aus.

    Screenshot der Option

  6. Im Dialogfeld "Fehlerseiteneinstellungen bearbeiten" (bei dem Sie lokale und Remoteanforderungen senden) müssen Sie die zweite Optionsschaltfläche auswählen, um detaillierte Fehler für lokale und Remoteanforderungen zurückzugeben. Standardmäßig ist die untere Option ausgewählt, um detaillierte Fehler nur für lokale Anforderungen zu senden.

    Screenshot des Dialogfelds

    Es wird nicht empfohlen, detaillierte Fehler für Remoteanforderungen zu senden, da diese Option möglicherweise vertrauliche Informationen für das Internet verfügbar macht. Sie müssen die Änderungen wiederherstellen, sobald Sie weitere Informationen zum Fehler haben.

Weitere Informationen erhalten Sie, um Fehleranforderungsablaufverfolgungsprotokolle (Failed Request Trace, FREB) für die 500 Fehler zu erfassen und zu untersuchen.

500 Fehler in ASP.NET

Wenn in ASP.NET ein Fehler von 500 auftritt, verwenden Sie die folgenden Methoden, um die Ursache des Fehlers zu identifizieren:

  • Überprüfen Sie die Anwendungsereignisprotokolle.

    Überprüfen Sie die Anwendungsereignisprotokolle um den Zeitpunkt, zu dem das Problem aufgetreten ist. ASP.NET protokolliert die Details des Fehlers, einschließlich des Aufrufstapels, in den Anwendungsereignisprotokollen.

    Führen Sie die folgenden Schritte aus, um auf die Anwendungsereignisprotokolle zuzugreifen:

    1. Öffnen Sie das Startmenü, suchen Sie nach Ereignisanzeige, und wählen Sie Ereignisanzeige aus.
    2. Öffnen Sie unter Ereignisanzeige den Knoten Windows-Protokolle.
    3. Wählen Sie "Anwendung" aus, um die Anwendungsereignisprotokolle zu öffnen.
    4. Suchen Sie nach Fehlern, die der fehlgeschlagenen Anwendung zugeordnet sind. Der Wert in der Spalte "Quelle " für die Fehler lautet "IIS AspNetCore Module" oder "IIS Express AspNetCore Module".
  • Erfassen Sie Speicherabbilder.

    In einigen Fällen kann es erforderlich sein, ein Speicherabbild einer bestimmten Ausnahme zu erfassen, um die Details der Ausnahme zu untersuchen, die den HTTP-Status 500 verursacht hat.

    Um Dumps zu erfassen, befolgen Sie die Anweisungen in "Speicherabbilder sammeln" für eine Ausnahme mit der ersten Chance, wenn sie auftritt.

    Verwenden Sie das DebugDiag 2-Analysetool (Teil der DebugDiag-Suite ) mit der CrashHangAnalysis-Regel für die gesammelten Dumps, um einen Bericht zu generieren, der verwendet werden kann, um den Aufrufstapel zu überprüfen und die Ursache zu identifizieren.

    Führen Sie die folgenden Schritte aus, um einen Bericht mithilfe des DebugDiag-Analysetools zu generieren:

    1. Öffnen Sie DebugDiag 2-Analyse.
    2. Wählen Sie "Datendateien hinzufügen" aus, und fügen Sie die .dmp Datei(n) hinzu.
    3. Wählen Sie "CrashHangAnalysis" und "PerfAnalysis" und dann "Analyse starten" aus.

    Nach Abschluss des Vorgangs wird ein Bericht (MHT) in C:\Program Files\DebugDiag\Reports erstellt und in Internet Explorer mit den Ergebnissen und Empfehlungen angezeigt.

    Wenn Sie benutzerdefinierte DLLs verwenden, können Sie den Symbolsuchpfad für die benutzerdefinierten PDB-Dateien angeben, indem Sie die folgenden Schritte ausführen:

    1. Öffnen Sie das DebugDiag 2-Sammlungstool.
    2. Wählen Sie >>" und "Suchpfade" aus.
    3. Wählen Sie unter "Symbolsuchpfad zum Debuggen" die Option "Durchsuchen" aus, um den Pfad festzulegen.
  • Erfassen Sie die Perfview-Ablaufverfolgung, um ExecutionTimeout-Probleme zu identifizieren.

    Bei 500 Fehlern aufgrund der Überschreitung der ASP.NET ExecutionTimeout erfassen Sie eine PerfView-Ablaufverfolgung und Dumps, um Verzögerungen zu identifizieren.

500 Fehler in ASP.NET Core

Wenn in ASP.NET Core ein 500-Fehler auftritt, verwenden Sie die folgenden Methoden, um die Ursache des Fehlers zu identifizieren:

  • Überprüfen Sie die Anwendungsereignisprotokolle.

    Führen Sie die folgenden Schritte aus, um auf die Anwendungsereignisprotokolle zuzugreifen:

    1. Öffnen Sie das Startmenü, suchen Sie nach Ereignisanzeige, und wählen Sie Ereignisanzeige aus.
    2. Öffnen Sie unter Ereignisanzeige den Knoten Windows-Protokolle.
    3. Wählen Sie "Anwendung" aus, um die Anwendungsereignisprotokolle zu öffnen.
    4. Suchen Sie nach Fehlern, die der fehlgeschlagenen Anwendung zugeordnet sind. Der Wert in der Spalte "Quelle " für die Fehler lautet "IIS AspNetCore Module" oder "IIS Express AspNetCore Module".
  • Aktivieren Sie die Entwickler ausnahmeseite.

    Die Umgebungsvariable ASPNETCORE_ENVIRONMENT kann web.config hinzugefügt werden, um die Anwendung in der Entwicklungsumgebung auszuführen. Wenn Sie die Umgebungseinstellung im Startcode Ihrer Anwendung nicht überschreiben, indem Sie die UseEnvironment Methode im Host-Generator verwenden, kann die Umgebungsvariable die Entwicklerausnahmeseite anzeigen, wenn die Anwendung ausgeführt wird.

    <aspNetCore processPath="dotnet"
        arguments=".\MyApp.dll"
        stdoutLogEnabled="false"
        stdoutLogFile=".\logs\stdout"
        hostingModel="InProcess">
      <environmentVariables>
         <environmentVariable name="ASPNETCORE_ENVIRONMENT" value="Development" />
      </environmentVariables>
    </aspNetCore>
    

    Das Festlegen der Umgebungsvariable ASPNETCORE_ENVIRONMENT wird nur für Staging- und Testserver empfohlen, die nicht für das Internet verfügbar gemacht werden. Entfernen Sie nach der Fehlerbehebung die Umgebungsvariable aus der Datei web.config.

  • Aktivieren Sie das ASP.NET Core Module-Protokoll stdout .

    Führen Sie die folgenden Schritte aus, um Protokolle zu aktivieren und anzuzeigen stdout :

    1. Navigieren Sie zum Bereitstellungsordner der Website auf dem Hostsystem.

    2. Erstellen Sie den Ordner logs, wenn dieser nicht vorhanden ist. Anweisungen zum Aktivieren von MSBuild zum automatischen Erstellen des Protokollordners in der Bereitstellung finden Sie unter ASP.NET Core-Verzeichnisstruktur.

    3. Bearbeiten Sie die Datei web.config. stdoutLogEnabled Legen Sie true den stdoutLogFile Pfad so fest, dass er auf den Protokollordner verweist (z. B. .\logs\stdout), wie im folgenden Beispiel:

      <aspNetCore processPath="dotnet"
          arguments=".\App.dll"
          stdoutLogEnabled="true"
          stdoutLogFile=".\logs\stdout">
      </aspNetCore>
      
    4. Wird als Dateinamenpräfix verwendet stdout . Ein Zeitstempel, eine Prozess-ID (PID) und eine Dateierweiterung werden automatisch hinzugefügt, wenn das Protokoll erstellt wird. Ein typischer Protokolldateiname ist stdout_<timestamp>_<PID>.log.

    5. Stellen Sie sicher, dass die Identität des Anwendungspools über Schreibberechtigungen für den Ordner Protokolle verfügt.

    6. Speichern Sie die aktualisierte Datei web.config.

    7. Stellen Sie eine Anforderung an die Anwendung vor.

    8. Navigieren Sie zu dem Ordner logs. Suchen und öffnen Sie das neueste stdout Protokoll.

    9. Untersuchen Sie die Fehler im Protokoll.

    Führen Sie die folgenden Schritte aus, um die Protokollierung zu deaktivieren stdout , wenn die Problembehandlung abgeschlossen ist:

    1. Bearbeiten Sie die Datei web.config.
    2. Legen Sie stdoutLogEnabled auf false fest.
    3. Speichern Sie die Datei.
  • Aktivieren Sie das ASP.NET Core Module Debug Log (IIS).

    Um das Debugprotokoll des ASP.NET Core Module zu aktivieren, fügen Sie der Datei "web.config" der Anwendung die folgenden Handlereinstellungen hinzu:

    <aspNetCore ...>
       <handlerSettings>
         <handlerSetting name="debugLevel" value="file" />
         <handlerSetting name="debugFile" value="c:\temp\ancm.log" />
       </handlerSettings>
    </aspNetCore>
    

    Vergewissern Sie sich, dass der für das Protokoll angegebene Pfad vorhanden ist und dass die Identität des Anwendungspools Schreibberechtigungen für den Speicherort besitzt.

502 Fehler in ARR

Wenn in Application Request Routing (ARR) ein 502-Fehler auftritt, befolgen Sie die Anweisungen in der Problembehandlung von 502 Fehlern in ARR.

503 Fehler

Wenn 503 Fehler auftreten, kann der Unterstatuscode (sc-substatus) in den IIS-Protokollen oder in den s-reason einige Hinweise bereitstellen.

Weitere Informationen finden Sie unter:

Lesen Sie auch den folgenden Artikel, der ein bekanntes Problem hervorhebt, das zu 503 Fehlern führen kann:

HTTP-Antwort 503 „Dienst nicht verfügbar“ von IIS: eine häufige allgemeine Ursache

Datensammlung

Schritte zum Erfassen von FREB-Protokollen

Wichtig

Um FREB-Protokolle zu konfigurieren, stellen Sie sicher, dass der Ablaufverfolgungsrollendienst für IIS installiert ist.

Führen Sie die folgenden Schritte aus, um den Ablaufverfolgungsrollendienst für IIS zu installieren:

  1. Öffnen Sie Server-Manager, und wählen Sie "Rollen und Features>aus.
  2. Wählen Sie im Fenster "Rollen und Features hinzufügen" "Weiter" aus, bis Sie die Seite "Serverrollen" erreicht haben.
  3. Erweitern Sie den Webserverstatus>> und die Diagnose, und aktivieren Sie das Kontrollkästchen "Ablaufverfolgung".
  4. Wählen Sie "Weiter" für die nachfolgenden Schritte aus, und wählen Sie dann "Installieren" aus.

Nachdem der Rollendienst für die Ablaufverfolgung installiert wurde, führen Sie die folgenden Schritte aus, um FREB zu erfassen:

  1. Öffnen Sie das Befehlsfenster ausführen .

  2. Starten Sie inetmgr.

  3. Erweitern Sie im IIS-Manager unter dem Bereich "Verbindungen " den Computernamen, erweitern Sie "Websites", und wählen Sie dann die Zielwebsite aus.

    Screenshot der Zielwebsite im IIS-Manager.

  4. Doppelklicken Sie auf Regeln für die Ablaufverfolgung fehlgeschlagener Anforderungen.

    Screenshot der Startseite der Standardwebsite.

  5. Wählen Sie im Bereich "Aktionen" die Option "Hinzufügen" aus.

  6. Wählen Sie im Assistenten zum Hinzufügen der Regel zur Ablaufverfolgung von Fehlgeschlagenen Anforderungen auf der Seite "Inhalt zur Ablaufverfolgung angeben" die Option "Alle Inhalte> aus.

    Screenshot der Seite

  7. Aktualisieren Sie auf der Seite "Ablaufverfolgungsbedingungen definieren" das Feld "Statuscode(n) auf 400-600", und wählen Sie "Weiter" aus.

    Screenshot der Seite

  8. Aktivieren Sie auf der Seite "Ablaufverfolgungsanbieter auswählen" unter "Anbieter" alle Kontrollkästchen. Stellen Sie unter "Bereiche" sicher, dass alle Kontrollkästchen für jeden Anbieter aktiviert sind. Wählen Sie unter Ausführlichkeit die Option Ausführlich aus. Wählen Sie Fertig stellenaus.

  9. Aktivieren Sie die Ablaufverfolgung fehlgeschlagener Anforderungen für die Website, und konfigurieren Sie das Protokolldateiverzeichnis:

    1. Erweitern Sie im Bereich "Verbindungen" den Computernamen, erweitern Sie "Websites", und wählen Sie dann "Standardwebsite" aus.

    2. Wählen Sie im Bereich "Aktionen" unter "Konfigurieren" die Option "Ablaufverfolgung fehlgeschlagener Anforderungen" aus.

      Screenshot der Option

    3. Aktivieren Sie im Dialogfeld Einstellungen für die Ablaufverfolgung der Websitefehleranforderung das Kontrollkästchen "Aktivieren", legen Sie das Verzeichnisfeld auf "%SystemDrive%\inetpub\logs\logs\FailedReqLogFiles" fest, und legen Sie die maximale Anzahl von Ablaufverfolgungsdateien auf 1000 fest.

      Screenshot des Fensters

    4. Wählen Sie OK aus.

Schritte zum Erfassen einer PerfView-Ablaufverfolgung und -abbilden

Führen Sie die Schritte in den folgenden Abschnitten aus, um eine PerfView-Ablaufverfolgung und -abbilden zu erfassen.

Konfigurieren von PerfView und Procdump vor dem Problem

Bevor das Problem auftritt, führen Sie die folgenden Schritte aus, um PerfView und Procdump für die Datensammlung zu konfigurieren:

  1. Laden Sie ProcDumpherunter. Es ist eine einfache ausführbare Datei, die keine Installation erfordert und die Dumpsammlung automatisiert.

  2. Extrahieren Sie die procdump.exe Datei in einen bestimmten Ordner auf dem Server.

  3. Laden Sie das PerfView-Tool auf dem Server herunter. Es ist ein Profilertool, das Ereignisablaufverfolgung für Windows-Ereignisse (ETW) erfasst (keine Installation erforderlich).

  4. Damit PerfView nützliche Informationen bereitstellt, fügen Sie die Ablaufverfolgung als Rollendienst für IIS hinzu. Ohne aktivierte Ablaufverfolgung enthält eine ETW-Ablaufverfolgung nur HTTP.sys Informationen. Wenn Sie nicht sicher sind, ob der Rollendienst für die Ablaufverfolgung installiert ist, führen Sie die folgenden Schritte aus:

    1. Öffnen Sie Server-Manager, und wählen Sie "Rollen und Features>aus.
    2. Wählen Sie im Fenster "Rollen und Features hinzufügen" "Weiter" aus, bis Sie die Seite "Serverrollen" erreicht haben.
    3. Erweitern Sie den Webserverstatus>> und die Diagnose, und aktivieren Sie das Kontrollkästchen "Ablaufverfolgung".
    4. Wählen Sie "Weiter" für die nachfolgenden Schritte aus, und wählen Sie dann "Installieren" aus.
  5. Öffnen Sie das PerfView-Tool, wählen Sie das Menü "Sammeln" und dann die Option "Sammeln" aus.

  6. Aktivieren Sie die Kontrollkästchen "Zip", "Zusammenführen" und "Threadzeit ", wie im folgenden Screenshot gezeigt. Ändern Sie das Feld "Zirkel MB " auf 2000:

    Screenshot der Auswahl von ZIP, Seriendruck und Threadzeit.

  7. Erweitern Sie die Registerkarte "Erweiterte Optionen ", und aktivieren Sie das IIS-Kontrollkästchen , wie im folgenden Screenshot gezeigt.

    Screenshot des Sammelns von Daten über ein vom Benutzer angegebenes Intervall.

    Wenn Sie eine ASP.NET Core-Anwendung ausführen, fügen Sie die folgende Zeichenfolge in den zusätzlichen Anbietern hinzu:

    *Microsoft-Extensions-Logging:4:5,Microsoft-AspNetCore-Server-Kestrel,System.Net.Http,System.Net.Sockets,System.Net.NameResolution,System.Threading.Tasks.TplEventSource::5,Microsoft-System-Net-Http,Microsoft-Windows-Application Server-Applications::Verbose

    Notiz

    Verpassen Sie das Sternchen (*) nicht am Anfang.

Sammeln von Daten während des Problems

Führen Sie während des Problems die folgenden Schritte aus, um Daten zu sammeln:

  1. Wählen Sie die Schaltfläche "Sammlung starten " in PerfView mit den Konfigurationseinstellungen aus, die Sie im Abschnitt "PerfView konfigurieren" und "Procdump konfigurieren" vor dem Problemabschnitt eingerichtet haben.

  2. Öffnen Sie das Dialogfeld Internetinformationsdienste-Manager.

  3. Wählen Sie ihren Servernamen (links) aus.

  4. Doppelklicken Sie auf Arbeitsprozesse , um die Prozess-ID der Dienste anzuzeigen. Zum Beispiel:

    Screenshot der Arbeitsprozesse im IIS-Manager.

  5. Öffnen Sie die Eingabeaufforderung als Administrator.

  6. Navigieren Sie zu dem Ordner, in dem procdump.exe extrahiert wird, indem Sie im cd <path to procdump.exe> ausgeführt werden.

  7. Führen Sie den folgenden Befehl aus, um aufeinander folgende Abbilder zu erfassen.

    procdump.exe -accepteula -ma <PID of W3WP.exe)> -s 10 -n 3

    Notiz

    Ersetzen Sie durch <PID of W3WP.exe> die tatsächliche PID des W3WP.exe Prozesses, den Sie in Schritt 4 gefunden haben.

    • Sie können einen Pfad am Ende des Befehls angeben, um die Dumps an einem bestimmten Speicherort zu speichern.
    • Mit diesem Befehl werden drei Speicherabbilder in 10-Sekunden-Intervallen erfasst.
  8. Sobald die Dumps von procdump gesammelt wurden, beenden Sie PerfView, indem Sie "Sammlung beenden" auswählen oder zweieinhalb Minuten warten, bis sie automatisch beendet werden. PerfView erlauben, die gesammelten Daten zusammenzuführen, was einige Zeit in Anspruch nehmen kann. Außerdem wird eine Perfview.etl.zip Datei generiert. Wenn Sie zur Eingabe von Symbolen aufgefordert werden, wählen Sie "Microsoft-Symbolserver verwenden" aus.

Weitere Informationen