在asp.net core 1.1中,我有一个全局的拦截器,但是我所有的action中 有几个不需要这个拦截器拦截,我以前在asp.net mvc4中的做法是 再定义一个attribute 加在那几个action上边,在 全局的拦截器里判断 代码如下
public partial class CustActionFilterAttribute : ActionFilterAttribute { public override void OnActionExecuting(ActionExecutingContext filterContext) { Object[] actionFilter = filterContext.ActionDescriptor.GetCustomAttributes( typeof(NoActionFilterAttribute), false); //有 NoAuthentication 则 不验证 if (actionFilter.Length > 0) { base.OnActionExecuting(filterContext); return; } } }
但是现在 在asp.net core1.1 中 context.ActionDescriptor没有
GetCustomAttributes这个方法了,求大大们指点一下,应该怎么做!
你不应该这样做的,
你可以在这个拦截器上定义一个属性啊
比如是否拦截
public bool IsFiltger{get;set;}
OnActionExecuting代码中判断IsFiltger,如果IsFiltger是true的话就做,如果不是的话你就不需要做任何处理。、
然后在action上加上特性CustActionFilter(IsFilter=false)。
或者在构造函数中传入是否拦截也一样。
这是asp.net core 2.1代码,1.1也是一样的
public override void OnActionExecuting(ActionExecutingContext context)
{
AuthoritybtnAttribute authoritybtnAttribute =(AuthoritybtnAttribute)((Microsoft.AspNetCore.Mvc.Controllers.ControllerActionDescriptor)context.ActionDescriptor).MethodInfo.GetCustomAttribute(typeof(AuthoritybtnAttribute), false);
}
所有回答: