Вместо того чтобы пытаться создать новый экземпляр SamuraiDbContext
самостоятельно, вы можете использовать Dependency Injection в своем фильтре. Для этого вам нужно сделать три вещи:
Добавить конструктор к VerifyProfile
, который принимает аргумент типа SamuraiDbContext
, и сохранить его в виде поля.
private readonly SamuraiDbContext dbContext;
public VerifyProfile(SamuraiDbContext dbContext)
{
this.dbContext = dbContext;
}
Добавьте VerifyProfile
в контейнер DI.
services.AddScoped<VerifyProfile>();
Используйте ServiceFilter
, чтобы позаботиться о подключении фильтра к контейнеру DI.
[ServiceFilter(typeof(VerifyProfile))]
public IActionResult YourAction()
...
Вы можете применить атрибут ServiceFilter
на уровне действия, как показано, или на уровне контроллера. Вы также можете применять его в глобальном масштабе. Если вы хотите сделать это, вы можете заменить шаг 3 выше следующим:
services.AddMvc(options =>
{
options.Filters.Add<VerifyProfile>();
});
В качестве дополнительного ресурса, это сообщение в блоге содержит описание некоторых других опций.