«Не удалось создать экземпляр типа реализации« ICountryService »для типа службы« ICountryService ».» in do tnet Core-Worker Service - PullRequest
0 голосов
/ 29 апреля 2020

Попытка доступа к службе приложений в рабочей службе.

Ошибка ниже, когда я запускаю службу.

Невозможно создать экземпляр типа реализации «ICountryService» для типа службы «ICountryService».

Добавлен синглтон для этой службы в Program.cs


public static IHostBuilder CreateHostBuilder (string[] args) =>
            Host.CreateDefaultBuilder (args)
            .ConfigureLogging (logging => {
                logging.ClearProviders ();
                logging.SetMinimumLevel (Microsoft.Extensions.Logging.LogLevel.Trace);
            })
            // NLog: Setup NLog for Dependency injection
            .ConfigureServices ((hostContext, services) => {
                services.AddHostedService<Worker> ()
                    .Configure<EventLogSettings> (config => {
                        config.LogName = "Sample Service";
                        config.SourceName = "Sample Service Source";
                    });
                services.AddSingleton<ICountryService> ();
            })
            .UseSerilog ()
            .UseWindowsService ();
 }

Я пытался использовать IOptions, но исключения остаются теми же.

public class Worker : BackgroundService
{
    private readonly ILogger<Worker> _logger;
    private readonly ICountryService _countryService;

    public Worker(ILogger<Worker> logger, IOptions<ICountryService > countryService) {
        _logger = logger;
        _countryService = countryService;
    }

    protected override async Task ExecuteAsync(CancellationToken stoppingToken) {
        while (!stoppingToken.IsCancellationRequested) {
            _logger.LogInformation("Worker running at: {time}", DateTimeOffset.Now);
            await Task.Delay(1000, stoppingToken);
        }
    }
}
...