希望有关asp.net mvc Web应用程序快速简便的错误处理的建议。
答案 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了解所有这些......
祝你好运!