Попытка доступа к службе приложений в рабочей службе.
Ошибка ниже, когда я запускаю службу.
Невозможно создать экземпляр типа реализации «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);
}
}
}