Ограниченный атрибут не зарегистрирован в Startup.Cs - PullRequest
0 голосов
/ 04 июня 2018

У меня есть ограниченный класс атрибута в проекте 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 голосов
/ 04 июня 2018

Объявление для вашего RestrictedAttribute неверно.Вам нужно только наследовать от класса ActionFilterAttribute, как это уже происходит от интерфейса IActionFilter.

И в вашем классе вам нужно override OnActionExecuting класса ActionFilterAttribute, а нереализовать метод интерфейса, т. е. у вас не должно быть IActionFilter.OnActionExecuting, так как это не тот метод, который нужно реализовать.

Правильная реализация:

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

Кроме того, вы не 'Необходимо добавить фильтр к config.Filters в AddMvc().Это будет работать без этого: -)

...