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

Restricted Attribute did not register in Startup.Cs

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

 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 } }

您的 RestrictedAttribute 声明不正确。您只需要从 ActionFilterAttribute class 派生,因为它已经从 IActionFilter 接口派生。

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

正确的实现是:

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

此外,您不需要在 AddMvc() 中添加过滤器到 config.Filters。没有它也能工作:-)