1

我在三种模型中的 MVC 中进行了特殊处理。

 public class CustomHandleErrorAttribute : HandleErrorAttribute
{  
    public override void OnException(ExceptionContext filterContext)
    {
       //logging           

    }
}

 public class Base_Application : System.Web.HttpApplication
{
    protected void Application_Error(object sender, EventArgs e)
    {

        //Logging
    }
}

   public class Base_Controller : Controller
{
    protected override void OnException(ExceptionContext filterContext)
    {
        //Logging;

    }

}

如果我从代码中抛出一个示例异常,它会被CustomHandleErrorAttributeand捕获Base_Controller

Base_Application我记录异常时,Elmah 也记录异常。

所以我想知道在所有情况下最好的方法。

4

1 回答 1

1

如果您有基本控制器,我建议您采用这种方法

public class CustomHandleErrorAttribute : HandleErrorAttribute
{  
    public override void OnException(ExceptionContext filterContext)
    {
       //logging           

    }
}

并使用自定义属性装饰基本控制器

[CustomHandleError]
public class Base_Controller : Controller
{

}

因此,如果您将来添加一个不需要基本控制器的控制器,您也可以重用该属性。

还要通过这篇精彩的文章来决定是使用基本控制器还是 ActionFilter。

Application_Error事件可用于捕获页面级错误处理程序未捕获的错误。

于 2013-03-27T12:27:39.377 回答