我在ASP.NET MVC中有哪些错误处理选项?

时间:2008-12-04 15:19:36

标签: asp.net-mvc

我对ASP.NET MVC中的错误处理有哪些选择?

我是否在错误页面上调用GetLastError并发送电子邮件或登录?

3 个答案:

答案 0 :(得分:1)

为什么不是error handling filter

答案 1 :(得分:1)

在Global.asax中,您可以实现以下内容:

protected void Application_Error()
{
    Exception lastException = Server.GetLastError();
    GetLogger().Fatal(lastException); // your custom loggin code
}

答案 2 :(得分:1)

McvContrib具有“救援”属性 - 从Monorail借来的想法。你可以这样做:

[Rescue("default", AutoLocate = true)]
public class MyController : ConventionController

然后,您可以根据惯例创建救援视图,如下所示:

  • 查看/共享/解救/ Exception.aspx
  • 查看/共享/解救/ MyCustomException.aspx

等。当控制器中发生未处理的异常时,救援过滤器将呈现与异常类型同名的页面。如果未找到完全匹配,则呈现Exception.aspx。 (我想也许它可以解决继承层次结构,直到找到匹配为止。)

这些救援视图实现了ViewPage< HandleErrorInfo>所以在视图页面中,您将以ViewData.Model.Exception的形式访问异常。这是我在代码隐藏中放置代码的地方 - 记录异常 - 因为它创建了一个很好的应用程序边界。

如果您不想使用MvcContrib,可以研究代码以实现自己的解决方案。