在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);

}


所有回答:
微信扫描右侧二维码并关注,回复“暗号”,获取暗号在此输入并点“获取”按钮。
暗号: