Мне нужно использовать Entity Framework в моем собственном обработчике авторизации. Но это не работает. Это терпит неудачу во время выполнения. Я получаю эту ошибку в теле ответа:
<h2 class="stackerror">InvalidOperationException: Cannot consume scoped service 'SomeDbContext' from singleton 'Microsoft.AspNetCore.Authorization.IAuthorizationHandler'.</h2>
Я не могу ввести контекст БД, подобный этому. Как я могу использовать контекст БД в моем собственном обработчике авторизации?
В моем собственном классе обработчика авторизации:
public class CustomAuthorizationHandler : AuthorizationHandler<CustomAuthRequirement>
{
private readonly SomeDbContext _dbContext;
public CustomAuthorizationHandler(SomeDbContext context)
{
_dbContext = context;
}
protected override Task HandleRequirementAsync(AuthorizationHandlerContext context, CustomAuthRequirement requirement)
{
...
//Some datatable read operations with _dbContext
...
}
}
В моем Startup.cs:
public void ConfigureServices(IServiceCollection services)
{
services.AddDbContext<SomeDbContext>(options =>
options.UseNpgsql(Configuration.GetConnectionString("DefaultConnection")));
services.AddSingleton<IAuthorizationPolicyProvider, CustomAuthPolicyProvider>();
services.AddSingleton<IAuthorizationHandler, CustomAuthorizationHandler>();
...
}