Thomas Bandt

Über mich | Kontakt | Archiv

ASP.NET 2.0 - Globale Fehlerbehandlung

Zum Loggen und Überwachen von Fehlern gibt es auch für ASP.NET ganze Frameworks und Toolkits, allerdings neigt man (ich) doch oft dazu, die Kontrolle behalten und alles selbst machen zu wollen. So habe ich meine individuelle Fehlerüberwachung und das entsprechende Reporting schon mehrfach und unterschiedlich implementiert.

Die allereinfachste - und fast naheliegendste - Variante ist mir aber jetzt erst kürzlich aus purem Zeitmangel untergekommen.

Man nehme CustomErrors in der Web.Config und baue sich eine benutzerfreundliche Fehlerseite:

<customErrors mode="RemoteOnly" defaultRedirect="~/Error.aspx" />

Anschließend erstelle man sich, sofern noch nicht vorhanden, eine Global.asax mitsamt einer Methode namens Application_Error:

void Application_Error(object sender, EventArgs e)
{
    ErrorNotification n = new ErrorNotification();
    n.Notify(Server.GetLastError());
}

ErrorNotification ist hier eine eigene Klasse von mir, die das Reporting in Form von einfachen Fehlerbenachrichtigungen per Mail kapselt. An Sie übergebe ich schlicht die Exception, die zum Fehler geführt hat, die erhält man über Server.GetLastError().

Ergebnis: egal wo was kaputt geht und auf welcher Ebene (UserControl, WebForm, Handler), alles was über ASP.NET läuft und einen Fehler produziert bleibt hier hängen und wird durch CustomErrors abgefangen - d.h. man kann alles loggen, der Benutzer sieht aber nie etwas vom Fehler, egal wo er auftritt.

Einfacher geht's wirklich nicht mehr.



« Zurück  |  Weiter »