处理ASP.NET MVC系统错误的正确方法

时间:2010-12-23 02:03:01

标签: asp.net-mvc error-handling asp.net-mvc-3

哪种方法可以处理ASP.NET MVC中的系统错误?我在DimeCast.net上观看了一个视频,其中该人使用global.ascx文件编写方法Application_Error来处理错误。但是目前,我正在处理web.config文件中的错误。

有人能指出我如何正确处理错误吗?这可能是:

  1. 语法错误
  2. 例外
  3. 404和其他页面/文件未找到错误
  4. 应用程序相当大。

2 个答案:

答案 0 :(得分:7)

查看elmah以记录未处理的异常,实际上是nuget demo video上的一个简单示例

我使用elmah组合处理未处理的异常,并使用nLog来记录我可以处理但仍想记录的异常。到目前为止,这种组合已经很好地发挥了作用。

答案 1 :(得分:1)

您很可能需要一种方法组合。某些错误可以直接在您的模型中处理,其他错误可以在您的控制器中处理,而其他一些错误可能需要一直处理到应用程序级别(通过web.config或通过global.ascx。)

我更喜欢处理global.ascx中的错误,而不是通过web.config中的重定向来处理错误,因为在global.ascx中,我有更多关于导致错误的请求的信息,就像我通过Web进行重定向一样。配置设置当我的错误页面收到请求时,其中一些信息会丢失。

几个星期前我刚刚注意到404错误最好不要通过web.config处理,因为(按设计)导致HTTP重定向代码302而不是真正的HTTP 404代码,表明客户端资源不是存在。我在博客上有一篇文章详细介绍http://hectorcorrea.com/Blog/Returning-HTTP-404-in-ASP.NET-MVC

使用ELMAH作为Brook建议也是一个非常好的主意。