2009-04-02 8 views
8

Was ist der beste Weg, um Ausnahmen in catch-Anweisungen zu behandeln. Derzeit schreiben wir die Ausnahmebedingungsnachricht an die Schreibmethode des Antwortobjekts. Aber ich möchte eine Lösung, durch die der Benutzer nur eine allgemeine Fehlermeldung erhalten wird, dass etwas schiefgelaufen ist, aber wir müssen eine detaillierte Beschreibung des Fehlers erhalten. Ich würde gerne die verschiedenen Praktiken für die Ausnahmebehandlung in C# kennen lernen.Methoden zum Behandeln von Ausnahmen in einem Webprojekt mit C#

Antwort

7

Für das Webprojekt und um zu verhindern, dass Ausnahmen an den Browser weitergeleitet werden, können Sie Health Monitoring und auch die Verwendung von benutzerdefinierten Fehlerseiten aktivieren. Wenn Sie die Möglichkeit einer Ausnahme in der catch-Anweisung erwarten, verschachteln Sie einfach einen anderen try catch-in, so dass er gnädig überfällt.

Im global.asax abonnieren Sie können auch auf die Application_Error Veranstaltung, die für eine nicht behandelte Ausnahme

Andrew

Health Monitoring in ASP.NET aufgerufen wird: http://www.4guysfromrolla.com/articles/031407-1.aspx

+0

Definitiv der Weg zu gehen +1 –

1

Schreiben in Ereignisprotokoll ist eine der Optionen.

2

Ich würde den detaillierten Fehler in meiner Datenbank aufzeichnen und den Benutzer auf eine allgemeine Fehlerseite umleiten.

4

Gut für Sie um das zu beheben. Das direkte Schreiben von Ausnahmebedingungsnachrichten an den Benutzer kann ein erhebliches Sicherheitsrisiko darstellen. Wie Sie bereits festgestellt haben, können Ausnahmebedingungsnachrichten viele Informationen enthalten, die einem böswilligen Benutzer den Zugriff auf Ihre Website erleichtern könnten.

Ich würde einen Blick auf ELMAH (Fehlerprotokollierung Module und Handler); Es ist eine einfache Möglichkeit, die Protokollierung detaillierter Fehler zu Ihrer Web-App hinzuzufügen.

1

Wie REA_ANDREW sagte, verwenden Sie Health Monitoring zusammen mit den benutzerdefinierten Fehlerseiten.

Eine Sache, die er nicht explizit gesagt hat, ist, dass Sie den Stil der Programmierung vermeiden sollten, der try/catch-Blöcke um alles legt. Die Systemüberwachung protokolliert nicht behandelte Ausnahmen, und benutzerdefinierte Fehlerseiten zeigen dem Benutzer an, was immer der Benutzer über den Fehler sehen soll (wenn überhaupt). Aber das wird nur passieren, wenn Sie nicht fangen die Ausnahmen, so lassen Sie sie in Ruhe und lassen Sie sie propagieren.

Verwandte Themen