错误处理的极简主义方法

时间:2009-08-19 01:46:46

标签: asp.net-mvc

希望有关asp.net mvc Web应用程序快速简便的错误处理的建议。

4 个答案:

答案 0 :(得分:4)

ELMAH结合扩展HandleError的属性并通过ELMAH记录错误。有关如何使HandleError属性与ELMAH一起使用的一些想法,请参阅此question/answer。 Dan Swatik也blogged对此进行了实施,并根据该问题中接受的答案进行了实施。

答案 1 :(得分:2)

您仍然可以在Global.asax

中使用旧的Application_Error方法
protected void Application_Error(object sender, EventArgs e)
{
    // some good info in Server.GetLastError().GetBaseException() and Context.Request
    // that you can use in whatever you choose for 
    // your quick and easy logging/reporting
}

显然,你也想打开customErrors ......

<customErrors mode="RemoteOnly" defaultRedirect="~/error">
  <error statusCode="403" redirect="~/error/forbidden" />
  <error statusCode="404" redirect="~/error/notfound" />
  <error statusCode="500" redirect="~/error" />
</customErrors>

答案 2 :(得分:1)

检查书呆子晚餐样本。它使用了一种非常简洁的方法。

答案 3 :(得分:1)

我最近刚采用了一种非常快速的错误报告解决方案,可能会给你一些想法......

创建一个基本控制器类,让我们调用它MyBaseController。如果你愿意,让你的所有控制器继承这个,但如果你只有一个控制器,那就没有必要了。

然后,您可以覆盖其部分OnException方法并插入您可能喜欢的任何类型的错误报告,例如向您发送一封包含ToString()异常的电子邮件。例如:

public MyOwnBaseController : Controller
    protected override void OnException(ExceptionContext context)
    {
        SendAdminErrorAlert("Egads! An Error!", context.Exception.ToString());
        // I have a view named "500.aspx" that I will now show...
        context.ExceptionHandled = true;
        this.View("500").ExecuteResult(this.ControllerContext);
    }
}

我还发现这篇文章很有帮助:http://blog.dantup.me.uk/2009/04/aspnet-mvc-handleerror-attribute-custom.html了解所有这些......

祝你好运!
-f!