В .net ядра MVC и .net основные WebAPI проекты обычно нужно добавить фильтры FilterAttribute полномочий для решения ряда интерфейсов, проблемы проверки параметров. Нам нужно использовать фильтр плагин в системе был введен (класс) и так далее. Вынесенные на фильтре методы контроллера не подскажут нам нулевой аргумент конструктора. Как справиться с этой проблемой?
Первый шаг: инъекционного фильтр
public void ConfigureServices(IServiceCollection services)
{
//注入筛选器
services.AddScoped<ApiActionFilterAttribute>();
}
ApiActionFilterAttribute обычай ActionFilterAttribute, унаследованный от ActionFilterAttribute, [Другие фильтры могут также сделать это]
Шаг два: добавление выноски по методу
[ServiceFilter(typeof(ApiActionFilterAttribute))]
Я здесь, чтобы воспользоваться ServiceFilter Microsoft предложил эту услугу.
Третий шаг: использование зарегистрированных компонентов (модуль типа)
public class ApiActionFilterAttribute : ActionFilterAttribute
{
private readonly ILogger<ApiActionFilterAttribute> _logger;
public ApiActionFilterAttribute(Microsoft.Extensions.Options.IOptions<ILogger<ApiActionFilterAttribute> logger)
{
_logger = logger;
}
public override void OnActionExecuting(ActionExecutingContext actionContext)
{
_logger.LogInformation(Newtonsoft.Json.JsonConvert.SerializeObject(actionContext.HttpContext.Request.Headers));
}
}
Я здесь компоненты ILogger были имплантированы, вы можете использовать компонент здесь.