Привет .
Для вашего случая оба метода будут выполнены в MethodTwo.
Здесь вы можете узнать больше о последовательности выполнения фильтров - Фильтры в ASP. NET Core - MSDN Таким образом, для вашего случая вы можете проанализировать существующие атрибуты действия в RequireFilter1 и не выполнять его в случае, если какой-либо другой ServiceFilterAttribute назначен действию. Или вы можете создать свой атрибут, который будет блокировать атрибут Controller.
Например (отключить выполнение фильтра контроллера, если ServiceFilterAttribute прикреплен к действию):
public void OnActionExecuting(ActionExecutingContext context)
{
var actDescr = (context.ActionDescriptor as ControllerActionDescriptor);
if (actDescr!=null)
{
var attrs = actDescr.MethodInfo.GetCustomAttributes(typeof(ServiceFilterAttribute),true);
if (attrs.Any())
return;
}
context.HttpContext.Response.Headers.Add("ActionFilterExample1",
new string[] { "test ActionFilterExample1", "test ActionFilterExample0" });
}
Также вы должны сделать то же самое для OnActionExecuted фильтра.
Другой способ - создать отдельный атрибут для отключения атрибута контроллера:
public class DisableAttr : Attribute
{
}
и проверить его в OnActionExecuting:
actDescr.MethodInfo.GetCustomAttributes(typeof(DisableAttr),true);