“尝试激活“Application.Startup”时无法解析类型“Microsoft.Extensions.Logging.ILogger`1[Application.Startup]”的服务。”

PDT*_*ech 5 c# asp.net-core

我有一个 ASP.NET Core 3.0 应用程序。我收到错误为

“尝试激活“Application.Startup”时无法解析类型“Microsoft.Extensions.Logging.ILogger`1[Application.Startup]”的服务。”

我知道 ILogger 没有在 ASP.NET Core 3.0 应用程序中默认注册。下面是我的 Program.cs 和 Startup.cs 代码供参考

public static IHostBuilder CreateHostBuilder(string[] args) =>
    Host.CreateDefaultBuilder(args)
        .ConfigureLogging(logging =>
          {
            logging.ClearProviders();
            logging.SetMinimumLevel(LogLevel.Trace);
          })
        .ConfigureWebHostDefaults(webBuilder =>
        {
          webBuilder.UseStartup<Startup>();
        });
Run Code Online (Sandbox Code Playgroud)

启动.cs

public void ConfigureServices(IServiceCollection services)
    {
        var serviceProvider = services.BuildServiceProvider();
        var logger = serviceProvider.GetService<ILogger<AnyClass>>();
        services.AddSingleton(typeof(ILogger), logger);
        ...
     }
Run Code Online (Sandbox Code Playgroud)

请任何人都可以帮助我解决这个错误,我在我的情况下做错了什么?

Mih*_*myh 5

根据https://learn.microsoft.com/en-us/aspnet/core/fundamentals/logging/?view=aspnetcore-3.1#create-logs-in-the-startup-class在 DI 容器完成之前写入日志不支持 Startup.ConfigureServices 方法中的设置。

您无法执行var logger = serviceProvider.GetService<ILogger<AnyClass>>();此操作,因为此时 DI 容器尚未配置。

有关所提供链接的更多信息。