【问题标题】:ASP.NET - Send e-mail whenever an exception occursASP.NET - 发生异常时发送电子邮件
【发布时间】:2012-12-12 17:47:47
【问题描述】:

您好,感谢您抽出宝贵时间回答我的问题。

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

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

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

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

再次感谢!

【问题讨论】:

标签: c# asp.net exception-handling


【解决方案1】:

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

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

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

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

【讨论】:

  • +1。 Log4Net 很棒。 (不要因为它近年来的低活跃度而避开它。)
  • 所以基本上我集成了 elmah 或 log4net,设置了配置文件,然后在 application_error() 中我基本上将用户重定向到一个错误页面并告诉他这个错误已被记录并且管理员已经收到通知了吗?
  • @Dragan 是的,这是一种常见的方法
【解决方案2】:

Elmah 非常适合:

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

这是config example

【讨论】:

  • 是的,我正在查看 elmah 页面。但是,这只处理未处理的异常。我处理 CRUD 操作发生的异常,并在标签消息中打印,例如“添加新项目时出现问题。管理员将收到此问题的通知。”这意味着我会处理这些异常。如果我未处理异常并且 elmah 已记录它,用户会看到什么?黄屏死机?
  • 没有。如果你做得对,绝对不是 YSOD。让未处理的错误冒泡到您的全局错误处理程序。这对错误表现出友好的态度,Elmah 仍然参与其中。
  • 好的,我将进一步研究如何在 elmah 记录异常后处理它。如果你有一个链接表明那会很棒。我接受你的回答。非常感谢,非常感谢。以前从未听说过 ELMAH,这正是我想要的!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-10-17
  • 2017-05-03
  • 2015-11-14
  • 2012-12-11
  • 2016-09-15
  • 1970-01-01
相关资源
最近更新 更多