代码之家  ›  专栏  ›  技术社区  ›  DCNYAM

ASP。NET错误处理

  •  10
  • DCNYAM  · 技术社区  · 17 年前

    在我的asp.net应用程序中,我通常使用Application_Error全局事件处理程序来记录错误,并将用户重定向到用户友好的错误页面。

    ELMAH 虽然这看起来很有趣,但Application_Error似乎是更简单的方法。

    我读过其他问题,包括我自己在内的人都提出了这样或那样的建议。我想知道的是,使用其中一种是否比另一种有任何显著的好处,为什么?

    2 回复  |  直到 17 年前
        1
  •  8
  •   Ben Scheirman    17 年前

    Elmah是一个出色的项目,我们将其用于所有ASP。NET应用程序。它不仅会为您记录未处理的错误,还会抓取整个 原文

    它支持电子邮件、RSS提要(包括逐项和摘要),并有一个有吸引力的控制台。

    对于配置中的3行和dll引用,我会说这是一个扣篮。

        2
  •  1
  •   stevemegson    17 年前

    我想ELMAH的主要缺点是它可能对你需要的东西过于苛刻。如果它记录和存储的信息比您自己的实现中更多,那么这在存储和处理方面是不必要的开销。您还需要考虑如何确保对ELMAH控制台的访问,因为这些异常细节可能包含您应用程序的有趣细节(这并不难,但这是您以前没有的担忧)。

    另一方面,一旦你确定某个顽固的bug需要它,你自己的实现可能会增长到记录所有额外的信息,你真的在乎把显示错误页面的时间缩短几分之一秒吗?很有可能你最终会构建自己的ELMAH版本,所以为什么不直接使用ELMAH来节省时间呢。

    我建议,如果你确实想编写自己的错误日志而不是使用ELMAH,你至少应该把它放在一个模块中,而不是直接放在global.asax中的Application_error中。只需在模块的Init方法中订阅应用程序的Error事件,您就可以通过web.config中的一行在另一个应用程序中轻松重用错误处理代码。

    我还发现通过ASP.NET处理任何异常日志记录都很有用。NET的健康监控。这使得在web.config中控制日志记录的类型和级别变得容易,还允许记录在尝试中处理的异常。..catch,但不会到达Application_Error。创建一个扩展WebRequestErrorEvent的自定义HandledExceptionEvent类,您可以在任何捕获块中创建和引发这些事件,只要您真的想知道即使处理了异常也发生了。

    推荐文章