我有一个 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)
请任何人都可以帮助我解决这个错误,我在我的情况下做错了什么?
根据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 容器尚未配置。
有关所提供链接的更多信息。