【问题标题】:Should you use the method Application_Error in your global.asax in ASP.NET MVC?您是否应该在 ASP.NET MVC 的 global.asax 中使用 Application_Error 方法?
【发布时间】:2010-11-14 17:45:56
【问题描述】:

我知道在 ASP.NET 中,人们通常会在其 global.asax 文件中放置一个名为“Application_Error”的受保护方法,以便处理 logging of exceptions

我的问题是,这是 ASP.NET 唯一的事情,还是在 ASP.NET MVC 中同样有效?它是否是 ASP.NET MVC 最佳实践?

【问题讨论】:

  • 您可以使用 Application_Error() 方法,但它不会像您期望的那样工作。这是另一个 SO 问题,我们正在进一步讨论该问题:praveenbattula.blogspot.com/2009/12/…

标签: c# asp.net asp.net-mvc global-asax error-logging


【解决方案1】:

您应该使用异常过滤器来处理控制器中的异常。您可以通过将 [HandleError] 属性添加到控制器操作来执行此操作。更多信息请访问:MS MVP MVC Blog

【讨论】:

    【解决方案2】:

    您可以使用 Application_Error 块,但可以使用 better yet, use ELMAH。这是一个可爱的错误记录工具(我有点惊讶它没有与 ASP.Net/ASP.Net MVC 捆绑在一起)。

    如果您从未使用过它,它会捕获黄屏死机和一大堆环境变量,以便您查看已捕获的错误。

    除此之外,我们所有的控制器都继承自一个控制器基类,该基类装饰有 Wolfwyrd 链接到的 [HandleError] 属性,以便我们两全其美。

    【讨论】:

      【解决方案3】:

      在 ASP.Net 中工作的任何东西都在 ASP.Net MVC 中工作,我的意思是任何东西。包括带有代码隐藏和视图状态的旧式 ASPX 页面。

      【讨论】:

      • ASP.NET 中的一切都应该在 MVC3 中工作。不幸的是,在框架之间没有相同行为的东西之一是 Application_Error() 方法:praveenbattula.blogspot.com/2009/12/…
      • 这完全不真实且具有误导性。有很多东西在 MVC 中不起作用。另一个例子是 Server.Transfer。
      猜你喜欢
      • 1970-01-01
      • 2010-11-13
      • 2012-01-30
      • 1970-01-01
      • 2010-11-30
      • 2012-12-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多