Freigeben über


Gewusst wie: Behandeln von Fehlern auf Anwendungsebene

Aktualisiert: November 2007

In diesem Codebeispiel wird das Erstellen eines Fehlerhandlers in der Datei Global.asax veranschaulicht, der alle unbehandelten ASP.NET-Fehler während der Verarbeitung einer Anforderung auffängt – d. h. alle Fehler, die nicht mit einem Try/Catch-Block oder in einem Fehlerhandler auf Seitenebene abgefangen werden. In dem Beispiel übergibt der Handler die Steuerung an die generische Fehlerseite GenericErrorPage.aspx, die den Fehler interpretiert und eine entsprechende Meldung ausgibt.

Beispiel

Das folgende Beispiel ist einem vollständigen Codebeispiel unter Vollständiges Beispiel für Fehlerhandler entnommen.

Zum Aktivieren des Fehlerereignishandlers in der Datei Global.asax kann in der Datei Web.config keine Datei für defaultRedirect festgelegt werden. Die Konfigurationsdatei hat Vorrang. Deshalb können Sie entweder customErrors auf Off festlegen oder die defaultRedirect-Einstellung entfernen. Wenn in der Konfigurationsdatei Web.config customErrors auf Off festgelegt ist, werden vom Application_Error-Ereignishandler in Global.asax alle unbehandelten Fehler bearbeitet.

Sicherheitshinweis:

Stellen Sie customErrors in der Datei Web.config nicht auf Off, wenn in der Datei Global.asax kein Application_Error-Handler vorhanden ist. Andernfalls könnten vertrauliche Informationen über Ihre Website von jedem offengelegt werden, der auf Ihrer Site einen Fehler verursachen kann.

Robuste Programmierung

Es ist besser, Try/Catch-Blöcke für jeden fehleranfälligen Code zu verwenden, anstatt sich auf einen globalen Fehlerhandler zu verlassen.

Ein in der Datei Global.asax definierter Fehlerhandler fängt nur Fehler auf, die während der Verarbeitung von Anforderungen der ASP.NET-Laufzeit auftreten. Er fängt beispielsweise den Fehler auf, wenn ein Benutzer eine ASPX-Datei anfordert, die in Ihrer Anwendung nicht vorhanden ist. Er fängt jedoch nicht den Fehler auf, der auftritt, wenn ein Benutzer eine nicht vorhandene HTM-Datei anfordert. Für Nicht-ASP.NET-Fehler können Sie in Internet Information Services (IIS – Internetinformationsdienste) einen benutzerdefinierten Handler erstellen. Der benutzerdefinierte Handler wird auch nicht für Fehler auf Serverebene aufgerufen.

Sie können Fehlerinformationen für Anforderungen aus der Datei Global.asax nicht direkt ausgeben, sondern Sie müssen Steuerelemente an eine andere Seite übermitteln, normalerweise eine Web Forms-Seite. Verwenden Sie zum Übertragen von Steuerelementen an andere Seiten die Transfer-Methode. Dadurch bleibt der aktuelle Kontext erhalten, sodass Sie Fehlerinformationen von der GetLastError-Methode abrufen können.

Nach dem Behandeln eines Fehlers muss dieser durch Aufruf der ClearError-Methode des Server-Objekts (HttpServerUtility-Klasse) gelöscht werden.

Sicherheit

Vergewissern Sie sich, dass keine Fehlerinformationen angezeigt werden, durch die das Beschädigen der Anwendung durch böswillige Benutzer unterstützt wird. Ausführliche Informationen finden Sie unter Gewusst wie: Anzeigen von sicheren Fehlermeldungen.

Siehe auch

Aufgaben

Gewusst wie: Behandeln von Fehlern auf Seitenebene

Konzepte

Vollständiges Beispiel für Fehlerhandler