2

我有一个UsersController, with OnException(有效),但如果我从Controller继承BaseControllerOnException即使我把它放在BaseController.

基本上我想让我的所有控制器都继承,BaseController所以我可以在那里只有一个OnException处理程序,它可以捕获所有内容......

4

1 回答 1

5

您不需要从自定义基控制器类继承,以便让所有控制器以相同的方式处理异常。您可以使用 ActionFilter 来完成。

[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, 
    AllowMultiple = true, Inherited = true)]
public class CustomHandleErrorAttribute : HandleErrorAttribute
{
    public override void OnException(ExceptionContext context)
    {
        // do custom exception handling here
        // to return View("Error"), you can just do this:
        context.Result = new ViewResult { ViewName = "Error" };
    }
}

您可以使用此 Global.asax 将其应用于库中的所有控制器:

public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
    //filters.Add(new HandleErrorAttribute()); // default MVC setting
    filters.Add(new CustomHandleErrorAttribute());
}
于 2012-08-10T00:59:43.510 回答