我有一个UsersController
, with OnException
(有效),但如果我从Controller
继承BaseController
,OnException
即使我把它放在BaseController
.
基本上我想让我的所有控制器都继承,BaseController
所以我可以在那里只有一个OnException
处理程序,它可以捕获所有内容......
我有一个UsersController
, with OnException
(有效),但如果我从Controller
继承BaseController
,OnException
即使我把它放在BaseController
.
基本上我想让我的所有控制器都继承,BaseController
所以我可以在那里只有一个OnException
处理程序,它可以捕获所有内容......
您不需要从自定义基控制器类继承,以便让所有控制器以相同的方式处理异常。您可以使用 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());
}