Я использую ASP.NET Core 2.2 с Pomelo.EntityFramework.MySql.
Вот мой код:
services.AddDbContext<dbContext>(options => options.UseMySQL(appConfigsSection["DbConnectionString"]));
services.AddSingleton<IUserService, UserService>();
services.AddAuthentication(x =>
{
x.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
x.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;
})
.AddJwtBearer(x=> {
x.Events = new JwtBearerEvents
{
OnTokenValidated = context =>
{
var userService = context.HttpContext.RequestServices.GetRequiredService<IUserService>();
}
};
Вот ошибка:
ядро asp.net Невозможно использовать сервис с областью действия из синглтона
в строке:
var userService = context.HttpContext.RequestServices.GetRequiredService<IUserService>();
Насколько я понимаю, DBContext должен использоваться в качестве службы Singleton, поэтомуIUserService.Но кажется, что DBContext рассматривается как служба Scoped.
Я легко могу это исправить, переключив свой IUserService обратно на службу Scoped.Но мне интересно, почему я не могу использовать DBContext в качестве единой службы?
Я думаю, что DBContext следует использовать в качестве службы Singleton, правильно ??
здесь