Я использую ASP.NET Core 2.2 У меня есть ResourceFilter, который принимает некоторые аргументы. Я использую ResourceFilter на моем контроллере. Я хотел бы использовать один и тот же тип фильтра с разными аргументами для конкретного действия в этом контроллере.
У меня есть что-то вроде:
public class MyRequestFilter : IResourceFilter
{
private readonly string[] _someValues;
MyRequestFilter(string[] someValues)
{
_someValues = someValues;
}
public void OnResourceExecuting(ResourceExecutingContext context)
{
// do some checks here using _someValues
}
}
Я использую его на своем контроллере как:
[TypeFilter(typeof(MyRequestFilter),
IsReusable = false,
Arguments = new object[] {
new[]{"some value",
"another value"}})]
public class MyController : Controller
{
}
Я хотел бы переопределить этот фильтр для определенногометод действия. Что-то вроде:
[TypeFilter(typeof(MyRequestFilter),
IsReusable = false,
Arguments = new object[] {
new[]{"value for this action",
"another value just for this action"}})]
public async Task<IActionResult> MyAction()
{
}
Когда я пытаюсь выполнить вышеизложенное и сделать запрос к конечной точке, с которой связано действие, я вижу, что MyRequestFilter.OnResourceExecuting () вызывается с экземпляром, свойства которого были переданы ватрибут на контроллере. Если я закомментирую фильтр контроллера, то увижу фильтр со значениями, которые я передал методу. Мой вопрос - есть ли способ сказать методу игнорировать фильтр контроллеров для этого конкретного маршрута и использовать вместо этого фильтр, определенный в атрибуте метода? Любой совет будет принят во внимание. Большое спасибо!