清除方法来捕获MVC 3.0应用程序中抛出的所有错误?

Ral*_*h N 22 error-handling model-view-controller asp.net-mvc

我正在建立一个MVC 3.0电子商务网站.我想避免在我的代码中粘贴try-catch块.

问题很简单 - 捕获网站上所有错误的好策略是什么?我想知道所有这些...所以我可以努力在网站上线后将该数量计算为0.我计划将每个错误写入记录器并发送给它.

我已经完成了关于在global.asax文件中捕获它的一些阅读...但我也读过它没有得到所有这些.

任何人有任何建议或能指出我的方向吗?

Ale*_*sky 25

解决该问题的MVC方式是过滤器.如果您已经使用MVC3,则全局过滤器适合您.处理错误有特殊类型的过滤器:HandleError过滤器.本文介绍了使用它的大部分内容.

您可以实现自己的过滤器并控制未处理异常的每个方面,例如:

public class HandleExceptionsAttribute : HandleErrorAttribute
{
    public override void OnException(ExceptionContext filterContext)
    {
        var expception = filterContext.Exception;

        // custom code here..
    }
}
Run Code Online (Sandbox Code Playgroud)

最后,如果您想要存储和记录所有未处理的异常,ELMAH即ELMAH.MVC是最佳选择.使用NuGet包安装它,配置它,所有数据都将从以下链接访问:

http://yourapp/admin/elmah/

我的建议是不要使用Application_ErrorGlobal.asax.cs中的任何内容.