受限制的属性未在Startup.Cs中注册

时间:2018-06-04 10:44:43

标签: c# asp.net-core authorize-attribute global-filter

我在Asp.net Core 2.0项目中有一个受限制的属性类,我用这个属性装饰我的控制器但是当我运行项目时这个类没有执行我也把调试点放在它上面 在这里我注册了这个属性

 services.AddMvc(config =>
        {
            config.Filters.Add(typeof(RestrictedAttribute));
        });


 [Area("Admin")]
[Restricted]
public class MediaController : Controller
{}
 public class RestrictedAttribute : ActionFilterAttribute, IActionFilter
{

    void IActionFilter.OnActionExecuting(ActionExecutingContext filterContext)
    { //Other Code } }

1 个答案:

答案 0 :(得分:1)

RestrictedAttribute的声明不正确。您只需要从已经从ActionFilterAttribute接口派生的IActionFilter类派生。

在您的班级中,您需要override OnActionExecuting类的ActionFilterAttribute并且不要实现接口方法,即您不应该IActionFilter.OnActionExecuting,因为那不是需要实施的方法。

正确的实施是:

public class RestrictedAttribute : ActionFilterAttribute
{
     public override void OnActionExecuting(ActionExecutingContext filterContext)
     { 
        //Other Code 
     }
}

此外,您无需将过滤器添加到config.Filters中的AddMvc()。没有它会工作: - )