2012-12-12 3 views
5

Hallo und danke, dass Sie sich die Zeit genommen haben, meine Frage zu beantworten.ASP.NET - E-Mail senden, wenn eine Ausnahme auftritt

Ich habe eine asp.net Webforms Anwendung, die ich für interne Zwecke eines mittelständischen Unternehmens gebaut.

Zunächst einmal möchte ich sagen, dass ich alle Ausnahmen zu behandeln, die während der CRUD-Operationen und zeigen die entsprechende Nachricht an den Benutzer passieren könnte. Gibt es jedoch eine Möglichkeit, dass ich die innereException-Nachricht zuerst zusammen mit dem Stack-Trace an mich senden kann, und dann die Nachricht dem Benutzer anzeigen kann?

Mit anderen Worten, ich möchte nicht eine Methode wie EmailException() erstellen und es in jedem catch (Exception ex) -Block aufrufen, aber ich möchte es einmal irgendwo aufrufen, wo alle Ausnahmen zuerst abgefangen werden.

Wenn meine Frage nicht klar genug ist, mir bitte sagen.

Danke nochmal!

+2

Dies ist älter als Schmutz an dieser Stelle, aber wahrscheinlich macht immer noch einen passable Ausgangspunkt: http://www.developer.com/net/asp/article.php/961301/Global-Exception-Handling-with-ASPNET .htm – Donnie

Antwort

2

Elmah ist perfekt dafür:

  • Protokollierung von fast allen unbehandelten Ausnahmen.
  • Eine Webseite zum Remote-Anzeigen des gesamten Protokolls der umcodierten Ausnahmen.
  • Eine Webseite zur Remoteansicht aller Details einer protokollierten Ausnahme, einschließlich farbiger Stack-Traces. * In vielen Fällen können Sie den ursprünglichen gelben Bildschirm des Todes überprüfen, den ASP.NET für eine bestimmte Ausnahme generiert hat, auch wenn der Modus customErrors deaktiviert ist.
  • Eine E-Mail-Benachrichtigung über jeden Fehler zu der Zeit es auftritt.
  • Ein RSS-Feed der letzten 15 Fehler aus dem Protokoll.

Hier ist ein config example.

+0

ja ich suche die elmah Seite.Dies behandelt jedoch nur unbehandelte Ausnahmen. Ich handle mit den Ausnahmen, die von CRUD-Operationen auftreten, und drucke in einem Label-Nachrichten wie "Problem beim Hinzufügen eines neuen Projekts aufgetreten. Der Administrator wird über dieses Problem benachrichtigt werden." Dies bedeutet, dass ich diese Ausnahmen behandle. Was sehen die Benutzer, wenn ich die Ausnahme nicht behandelt habe und elmah sie protokolliert hat? Gelber Bildschirm des Todes? – Dragan

+0

Nein. Definitiv kein YSOD, wenn Sie es richtig machen. Lassen Sie den unbehandelten Fehler bis zu Ihrem globalen Fehlerhandler. Dies stellt ein freundliches Gesicht auf den Fehler, und Elmah bekommt immer noch ein Stück der Handlung. –

+0

Okay, ich werde weiter untersuchen, wie die Ausnahme behandelt wird, nachdem Elmah sie protokolliert hat. Wenn Sie einen Link haben, der zeigt, dass das großartig wäre. Ich akzeptiere deine Antwort. Vielen Dank, sehr appreciated. Ich habe noch nie von ELMAH gehört, bevor es genau das war, wonach ich suchte! – Dragan

3

Elmah ist groß, aber Log4Net werden Ihnen auch diese Fähigkeit geben, zusammen mit anderen Protokollierungsfunktionen. Sie müssen nur eine SmtpAppender Definition zu Ihrer log4net-Konfiguration hinzufügen, zusammen mit allen anderen Appendern, die Sie wollen/brauchen/wollen.

Einfach, einfach zu tun. Und die einfachste Möglichkeit, alle nicht behandelten Ausnahmen abzufangen, besteht darin, eine Application_Error()-Methode zu Ihrer global.asax hinzuzufügen. Es wird von der Asp.Net Laufzeit aufgerufen und wird

alle unhandled ASP.NET-Fehler fangen, während der Verarbeitung einer Anforderung - mit anderen Worten, alle Fehler, die nicht mit einem Try/Catch-Block oder in einer gefangen page-level Fehlerbehandlung.

Es sollte angemerkt werden, dass Elmah, log4net und die global.asax Application_Error() Methode alle koexistieren glücklich zusammen. Elmah sitzt einfach nur da, sotto voce, und hört, Protokollierung aller Ausnahmen, die vorbeigehen.

+0

+1. Log4Net ist großartig. (Vermeiden Sie es nicht wegen seiner geringen Aktivität in den letzten Jahren.) –

+0

Also im Grunde integriere ich elmah oder log4net, richte die Konfigurationsdateien ein, und dann in application_error() leite ich einen Benutzer auf eine Fehlerseite um und sage ihm das Dieser Fehler wurde protokolliert und der Administrator wurde benachrichtigt? – Dragan

+0

@Dragan Yep, das ist eine übliche Art, es zu tun –

Verwandte Themen