private readonly IMyService _myService;
}
public class MyService : IMyService
{
private readonly MyDbContext _myDbContext;
}
MyBackgroundService: Singleton
MyService: Transient
MyDbContext: Scoped
Unhandled exception. System.AggregateException: Some services are not able to be constructed (Error while validating the service descriptor 'ServiceType: Microsoft.Extensions.Hosting.IHostedService Lifetime: Singleton ImplementationType: MyBackgroundService': Cannot consume scoped service 'MyDbContext' from singleton 'Microsoft.Extensions.Hosting.IHostedService'.)
---> System.InvalidOperationException: Error while validating the service descriptor 'ServiceType: Microsoft.Extensions.Hosting.IHostedService Lifetime: Singleton ImplementationType: MyBackgroundService': Cannot consume scoped service 'MyDbContext' from singleton 'Microsoft.Extensions.Hosting.IHostedService'.
Почему не винде у меня локально это эксепшен и это логично, а на линукс контейнерах это поднимается и работает?
Проблема заключается в том, что вы хотите использовать scoped MyDbContext в singleton классе. Это повлечёт за собой неприятное последствие — myDbContext "присосётся" к singleton сервису и станет singleton. Советую в данном случае использовать IServiceScopeFactory для создания экземпляра объекта
Проблему я понимаю. Почему не винде у меня локально это эксепшен и это логично, а на линукс контейнерах это поднимается и работает? - вот в чем был вопрос
Вероятно из—за версии дотнета
Тіпа для всієї програми , стане singeltonom?
ну там полюбому буде сінгелтон, там же хост сервіс
Обсуждают сегодня