asp.net mvc错误处理的最佳实践

时间:2010-12-24 02:20:03

标签: asp.net-mvc error-handling

我正在寻找一种处理asp.net mvc 2.0或3.0

错误的标准方法
  • 404错误处理程序
  • 控制器范围异常错误处理程序
  • 全局范围异常错误处理程序

3 个答案:

答案 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