5

您好,感谢您花时间回答我的问题。

我有一个 asp.net webforms 应用程序,它是为一家中型公司的内部目的而构建的。

首先让我说我处理了在 CRUD 操作期间可能发生的所有异常并向用户显示适当的消息。但是,有没有一种方法可以集中方式,首先将 innerException 消息与堆栈跟踪一起通过电子邮件发送给我自己,然后将消息显示给用户?

换句话说,我不想创建像 EmailException() 这样的方法并在每个 catch(Exception ex) 块中调用它,但我想在第一次捕获所有异常的地方调用它一次。

如果我的问题不够清楚,请告诉我。

再次感谢!

4

2 回答 2

4

Elmah 很棒,但Log4Net也会为您提供该功能以及其他日志记录功能。您只需要在您的 log4net 配置中添加一个SmtpAppender定义,以及您想要/需要/希望的任何其他附加程序。

简单,容易做。捕获任何未处理异常的最简单方法是Application_Error()向您的global.asax. 它由 Asp.Net 运行时调用并将捕获

处理请求时所有未处理的 ASP.NET 错误 — 换句话说,所有未使用 Try/Catch 块或页面级错误处理程序捕获的错误。

需要注意的是,Elmah、log4net 和 global.asaxApplication_Error()方法都可以愉快地共存。Elmah 只是坐在那里,轻声细语,倾听,记录任何经过的异常。

于 2012-12-12T18:02:45.690 回答
3

Elmah非常适合:

  • 记录几乎所有未处理的异常。
  • 用于远程查看重新编码异常的整个日志的网页。
  • 用于远程查看任何记录的异常的完整详细信息的网页,包括彩色堆栈跟踪。*在许多情况下,即使关闭了 customErrors 模式,您也可以查看 ASP.NET 为给定异常生成的原始黄屏死机。
  • 每个错误发生时的电子邮件通知。
  • 来自日志的最后 15 个错误的 RSS 提要。

这是一个配置示例

于 2012-12-12T17:51:22.620 回答