我正在寻找一种处理asp.net mvc 2.0或3.0
错误的标准方法答案 0 :(得分:8)
对于控制器范围错误,请尝试使用自定义异常属性,即
public class RedirectOnErrorAttribute : FilterAttribute, IExceptionFilter
{
public void OnException(ExceptionContext filterContext)
{
// Don't interfere if the exception is already handled
if(filterContext.ExceptionHandled)
return;
//.. log exception and do appropriate redirects here
}
}
然后用属性装饰控制器,错误处理应该是你的
[RedirectOnError]
public class TestController : Controller
{
//.. Actions etc...
}
如果错误与路由有关,则无效 - 即它首先找不到控制器。为此,请尝试Global.asax中的Application Error处理程序,即
protected void Application_Error(object sender, EventArgs e)
{
//.. perhaps direct to a custom error page is here
}
我不知道这是否是“最佳做法”。工作。
答案 1 :(得分:1)
不确定最佳做法,并且根据您对错误的处理方式,一个简单的解决方案是不是要使用web.config文件中的customErrors设置?
为了捕获未处理的错误,我有时会使用Global.asax文件中的Application_Error方法。
另外,请看一下这个SO post
答案 2 :(得分:0)
Here是对问题“404”部分的最详细解答。尽管主题是404,但它可以让您了解如何将其应用于其他错误类型。
虽然,我不能清楚地说明它是“最佳实践”,因为你需要一个具有该方法的图层超类型控制器。我最好赶上HttpException
中的那些Global.asax
。但在大多数情况下,它是一个很好的指南。
对于整个MVC应用中的任意异常 - 请不要忘记HandleErrorAttribute
。