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

Asp.net mvc asp.net mvc错误处理的最佳实践,asp.net-mvc,error-handling,Asp.net Mvc,Error Handling,我正在寻找一种处理asp.net mvc 2.0或3.0中错误的标准方法 404错误处理程序 控制器作用域异常错误处理程序 全局作用域异常错误处理程序 不确定最佳做法,根据您希望如何处理错误,一个简单的解决方案是不使用web.config文件中的customErrors设置吗 为了捕获未处理的错误,我有时使用Global.asax文件中的Application_Error方法 另外,看看这个是对问题“404”部分最详细的回答。尽管它的主要主题是404,但它会让您了解如何将其应用于其他错误类型

我正在寻找一种处理asp.net mvc 2.0或3.0中错误的标准方法

  • 404错误处理程序
  • 控制器作用域异常错误处理程序
  • 全局作用域异常错误处理程序

不确定最佳做法,根据您希望如何处理错误,一个简单的解决方案是不使用web.config文件中的customErrors设置吗

为了捕获未处理的错误,我有时使用Global.asax文件中的Application_Error方法

另外,看看这个

是对问题“404”部分最详细的回答。尽管它的主要主题是404,但它会让您了解如何将其应用于其他错误类型

尽管如此,我不能明确地说它是“最佳实践”,因为您需要一个具有这种方法的层超类型控制器。我最好在
Global.asax
中捕获那些
HttpException
s。但在很大程度上,它是一个很好的指南


对于整个MVC应用程序中的任意异常-不要忘记
HandleErrorAttribute

对于控制器范围错误,请尝试使用自定义异常属性,即

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中的应用程序错误处理程序,即

 protected void Application_Error(object sender, EventArgs e)
 {
      //.. perhaps direct to a custom error page is here
 }

但我不知道这是否是“最佳实践”。确实有效。

frier这是个大问题。正如您所期望的,MVC中肯定不支持它。