将ExceptionFilterAttribute限制为一个特定的MVC区域
问题描述:
在我的项目中,我有不同的区域。我添加了一个ExceptionFilterAttribute用于处理错误(自定义)。我不想这个属性手动添加到所有控制器,我想将这些属性来一个特定的区域,所以ExceptionFilterAttribute将工作将全部控制在该区域自动将ExceptionFilterAttribute限制为一个特定的MVC区域
任何建议
答
有没有办法对某个区域应用操作过滤器。你可以写一个自定义异常过滤器属性,然后应用它作为一个全球性的动作过滤器:
public class AdminAreaHandleErrorAttribute: HandleErrorAttribute
{
public override void OnException(ExceptionContext filterContext)
{
var area = filterContext.RouteData.Values["area"] as string;
if (string.Equals(area, "Admin", StringComparison.InvariantCultureIgnoreCase))
{
base.OnException(filterContext);
}
}
}
,然后注册为全局过滤:
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
filters.Add(new AdminAreaHandleError());
}