我正在建立一个MVC 3.0电子商务网站。我想避免在我的代码上粘贴try-catch块。
问题很简单 – 捕获我网站上抛出的所有错误的好策略是什么?我想知道他们所有的…所以我可以努力把这个计数值设置为0,一旦网站上线。我打算将每个错误写入记录器,并发送电子邮件。
我已经做了一些关于在global.asax文件中捕获它的阅读,但我也读过它并没有得到它们。
任何人有任何建议或者可以指出我的方向好吗?
解决方法
解决这个问题的MVC方法是过滤器。如果您已经在MVC3上,全球过滤器是为您而设。有特殊类型的过滤器用于处理错误:HandleError过滤器。
This article描述了很多使用它。
您可以实现自己的过滤器并控制未处理异常的每个方面,例如:
public class HandleExceptionsAttribute : HandleErrorAttribute { public override void OnException(ExceptionContext filterContext) { var expception = filterContext.Exception; // custom code here.. } }
最后,如果您想要存储和记录所有未处理的异常,那么ELMAH即ELMAH.MVC是最佳选择。使用NuGet package安装它,配置它,所有数据将从以下链接访问:
http://yourapp/admin/elmah/
我的建议是在Global.asax.cs中不要使用Application_Error这样的东西。