Устранение ошибки внедрения зависимостей в фоновой задаче API .NET 5C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Гость
 Устранение ошибки внедрения зависимостей в фоновой задаче API .NET 5

Сообщение Гость »


Основная цель — перезагрузка данных учетной записи пользователя через регулярные 30-минутные интервалы в API .NET 5. Преследуя эту цель, я узнал кое-что о реализации фоновых задач для автоматизации этого процесса. Следуя руководству, я попытался настроить фоновую задачу, также имеющую scopedService. Однако в ходе реализации я столкнулся с постоянными ошибками:
1.

«Служба для типа «AccountRepository.AccountScopedService» не зарегистрирована».

Несмотря на многочисленные попытки устранения неполадок, включая проверку регистрации службы, проверку внедрения зависимостей и повторный просмотр видео, ошибка остается неустраненной.
[*]Если я отменю последний шаг видео и просто использую IAccountSingletonService singletonService, IAccountTransientService transientService в ctor (то есть без IServiceProvider serviceProvider), приложение зависает. Swagger не загружается.
Изображение

Я ценю вашу помощь.

AccountLoaderBackgroundService.cs

с использованием системы; использование System.Collections.Generic; использование System.Threading; использование System.Threading.Tasks; использование Microsoft.Extensions.DependencyInjection; использование Microsoft.Extensions.Hosting; пространство имен AccountRepository { общедоступный класс AccountLoaderBackgroundService: BackgroundService { общедоступный только для чтения List AllPersons = новый List(); частный только для чтения IServiceProvider _serviceProvider; частный только для чтения IAccountSingletonService SingletonService; частный только для чтения IAcountTransientService transientService; public AccountLoaderBackgroundService (IAccountSingletonService singletonService, IAcountTransientService transientService, поставщик услуг IServiceProvider) { _serviceProvider = поставщик услуг; } защищенное переопределение асинхронной задачи ExecuteAsync (CancellationToken StopToken) { в то время как (!stoppingToken.IsCancellationRequested) { используя (область var = _serviceProvider.CreateScope()) { varscopedService =scope.ServiceProvider.GetRequiredService(); ЗагрузитьСчета(); System.Diagnostics.Debug.WriteLine("ExecuteAsync в AccountLoaderBackgroundService"); ждут Task.Delay(new TimeSpan(0, 30, 0)); } } } общедоступный логический LoadAccounts() { // считываем данные вернуть истину; } } } AccountLoaderHostedService.cs

с использованием Microsoft.Extensions.Hosting; использование системы; использование System.Threading; использование System.Threading.Tasks; пространство имен AccountRepository { общедоступный класс AccountLoaderHostedService: IHostedService { общедоступная асинхронная задача StartAsync (CancellationToken cancelToken) { в то время как (!cancellationToken.IsCancellationRequested) { System.Diagnostics.Debug.WriteLine("StartAsync в AccountLoaderHostedService"); ждут Task.Delay(new TimeSpan(0, 30, 0)); } } общедоступная задача StopAsync (CancellationToken cancelToken) { вернуть Задача.ЗавершеннаяЗадача; } } } Startup.cs

services.AddSingleton(); Services.AddScoped(); Services.AddTransient(); Services.AddHostedService(); Services.AddHostedService(); Кроме того, я написал классы и интерфейсы для трёх сервисов.
публичный класс AccountScopedService: IAccountScopedService { } общедоступный класс AccountSingletonService: IAccountSingletonService { } общедоступный класс AcountTransientService: IAcountTransientService { } общедоступный интерфейс IAccountScopedService { } общедоступный интерфейс IAccountSingletonService { } общедоступный интерфейс IAcountTransientService { }
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ, комментарий, отзыв

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»