Я пытаюсь запустить службу API в ASP.NET Core 3 с ведением журнала, но постоянно получаю сообщение об ошибке при попытке получить ILogger из службы зависимостей. Я думаю, что следовал примерам, которые я могу найти, но я продолжаю получать:
"System.InvalidOperationException: "Не удалось разрешить службу для типа" Microsoft.Extensions.Logging.ILogger`1[GMT.Beacon.Service.Startup]" при попытке активировать "GMT.Beacon.Service.Startup".
Я использую шаблон по умолчанию для запуска проекта, поэтому он настраивает веб-хост через построитель по умолчанию, который в соответствии с документацией должен автоматически настраивать ведение журнала. Кроме того, я пытался вручную добавить поставщиков, но получаю ту же ошибку. Я чувствую, что упускаю что-то очевидное, но не могу понять, что.
Вот класс Program.cs с ошибкой:
public class Program {
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder => {
webBuilder.UseStartup<Startup>();
});
public static void Main(string[] args) {
var host = CreateHostBuilder(args).Build();
var logger = host.Services.GetRequiredService<ILogger<Program>>();
logger.LogInformation("Test log entry.");
host.Run();
}
}
В классе Startup.cs вот конструктор:
public Startup(IConfiguration config, IHostEnvironment hosting, ILogger<Startup> logger) {
_hosting = hosting;
_config = config;
_logger = logger;
_logger.LogInformation($"{DateTime.UtcNow:R} - Starting (Environment={_hosting.EnvironmentName}; " + $"InformationalVersion={Assembly.GetEntryAssembly().GetCustomAttribute<AssemblyInformationalVersionAttribute>().InformationalVersion};");
}
Основываясь на документации, которую я могу найти, кажется, что это должно работать, но вместо этого выдает указанную выше ошибку в строке:
var host = CreateHostBuilder(args).Build();
Я также пытался вручную настроить ведение журнала (с приведенным ниже кодом), но это возвращает ту же ошибку.
Host.CreateDefaultBuilder(args)
.ConfigureLogging((hostingContext, logging) => {
logging.AddConfiguration(hostingContext.Configuration.GetSection("Logging"));
logging.AddEventSourceLogger();
logging.AddConsole();
logging.AddDebug();
})
.ConfigureWebHostDefaults(webBuilder => {
webBuilder.UseStartup<Startup>();
});
Кто-нибудь видит проблему с этой настройкой или знает, как правильно настроить подсистему ведения журнала в ASP.NET Core 3?