Фильтровать .net core для всех контроллеров, кроме одного

#c# #.net #asp.net-core #filter #attributes

#c# #.net #asp.net-core #Фильтр #атрибуты

Вопрос:

Я использую .NET Core 3.1 и иметь один фильтр, который я хочу использовать во всех контроллерах, кроме одного.

Я не хочу использовать [attribute] на всех контроллерах.

Мне нужен просто способ сказать, что конкретный контроллер не использует фильтр.

Ответ №1:

Вы можете реализовать фильтр глобально, установив что-то вроде этого в вашем FilterConfig.

 public void ConfigureServices(IServiceCollection services)
{
    services.AddControllersWithViews(options =>
    {
        options.Filters.Add(typeof(CustomActionFilter));
    });
}
  

Затем вы можете проверить, является ли текущий контроллер тем, который выполняется в вашем CustomFilter.

     public class CustomActionFilter : ActionFilterAttribute, IActionFilter
    {
         void IActionFilter.OnActionExecuting(ActionExecutingContext filterContext)
         {
              if(!filterContext.ActionDescriptor.ControllerDescriptor.ControllerName == "ExemptedController") {
                  OnActionExecuting(filterContext);
              }
         }
    }
  

Комментарии:

1. @shayankamalzadeh не беспокойтесь. рад, что это помогло. приветствия!

2. что такое MySampleActionFilter?