В моем приложении WebApi 2 у меня есть атрибут фильтра действий в моем базовом контроллере, этот атрибут имеет логическое свойство со значением по умолчанию, которое можно установить в конструкторе:
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method)]
public class MyActionFilterAttribute : ActionFilterAttribute
{
public bool MyProperty {get; set;}
public MyActionFilterAttribute(bool myProperty = true)
{
MyProperty = myProperty;
}
public override void OnActionExecuting(HttpActionContext actionContext)
{
if(MyProperty)
{
//DO Something
}
}
}
Я также настроил CustomValidatorFilter
в конфигурации webApi:
config.Filters.Add(new CustomValidatorFilterAttribute());
В некоторых действиях моего контроллера я хочу переопределить поведение MyActionFilterAttribute, установив значение MyProperty
в false
, я добавил OverrideActionFilters
в свое действие:
[OverrideActionFilters]
[MyActionFilterAttribute(myProperty: false)]
public IHttpActionResult MyCation()
{
//Some staff here
}
Но теперь моя пользовательская проверка больше не работает из-за использования OverrideActionFilters
. Есть ли способ переопределить OverrideActionFilters или просто указать фильтр для переопределения. Спасибо за помощь.
IAuthorizationFilter
. Они запускаются в другой момент жизненного цикла (до фильтров действий), и им также передается AuthorizationContext, которого нет у ActionFilters. Вы можете легко создать механизм, заставляющий фильтр ничего не делать, если установлено определенное значение. - person Erik Funkenbusch   schedule 12.12.2018