【问题标题】:Correct way to handle ASP.NET MVC system errors处理 ASP.NET MVC 系统错误的正确方法
【发布时间】:2010-12-23 02:03:01
【问题描述】:
在 ASP.NET MVC 中处理系统错误的最佳方法是什么?我在DimeCast.net 上观看了一个视频,其中那个家伙使用 global.ascx 文件编写了一个方法Application_Error 来处理错误。但目前,我正在处理 web.config 文件中的错误。
有人可以为我指出如何正确处理错误的正确方向吗?这可能是:
- 语法错误
- 例外情况
- 404 和其他页面/文件未找到错误
应用程序相当大。
【问题讨论】:
标签:
asp.net-mvc
error-handling
asp.net-mvc-3
【解决方案1】:
查看elmah 以记录未处理的异常,nuget demo video 上实际上有一个简单示例
我将 elmah 组合用于未处理的异常,并使用 nLog 来记录我可以处理但仍想记录的异常。到目前为止,这种组合效果很好。
【解决方案2】:
您很可能需要多种方法。有些错误可以直接在您的模型中处理,有些则在您的控制器中处理,还有一些可能需要一直处理到应用程序级别(通过 web.config 或通过 global.ascx。)
我更喜欢处理 global.ascx 中的错误,而不是通过 web.config 中的重定向,因为在 global.ascx 中,我有更多关于导致错误的请求的信息,就像我通过 web 进行重定向一样。配置设置 当我的错误页面收到请求时,其中一些信息会丢失。
几周前,我刚刚注意到最好不要通过 web.config 处理 404 错误,因为(根据设计)这会导致 HTTP 重定向代码 302,而不是指示客户端资源不存在的真正 HTTP 404 代码存在。我在我的博客上有一篇文章详细介绍了这一点http://hectorcorrea.com/Blog/Returning-HTTP-404-in-ASP.NET-MVC
按照 Brook 的建议使用 ELMAH 也是一个非常好的主意。