我正在尝试将 .netcore 框架从 2.2 升级到 3.1 。但我也想在 3.1 中使用 IHostingEnvironment、IWebHostBuilder 和 AddNewtonsoftJson。(我知道它们应该被替换,但如果我这样做,将需要代码重构,我现在不需要)。
当我使用 swagger 执行 api 时,收到 500 错误消息:
无法解析 JSON。原始结果:System.Exception:找不到方法:'Microsoft.Extensions.Logging.ILoggerFactory Microsoft.Extensions.Logging.ConsoleLoggerExtensions.AddConsole(Microsoft.Extensions.Logging.ILoggerFactory, Microsoft.Extensions.Logging.LogLevel)'。
这是堆栈跟踪的开始
失败:Microsoft.AspNetCore.Diagnostics.ExceptionHandlerMiddleware[1] 执行请求时发生未处理的异常。System.MissingMethodException:找不到方法:'Microsoft.Extensions.Logging.ILoggerFactory Microsoft.Extensions.Logging.ConsoleLoggerExtensions.AddConsole(Microsoft.Extensions.Logging.ILoggerFactory,Microsoft.Extensions.Logging.LogLevel)'。
我只在 Program.cs 中配置 Logger。
public static IWebHostBuilder CreateWebHostBuilder (string[] args) =>
WebHost.CreateDefaultBuilder (args)
.UseUrls ("http://0.0.0.0:5000")
.ConfigureLogging ((hostingContext, logging) => {
logging.AddConfiguration (hostingContext.Configuration.GetSection ("Logging"));
logging.AddConsole ();
logging.AddApplicationInsights ();
})
.UseStartup<Startup> ();
}
appsettings.json 中的配置
"Logging": {
"IncludeScopes": false,
"ApplicationInsights": {
"LogLevel": {
"Default": "Warning",
"Microsoft": "Error"
}
},
"LogLevel": {
"Default": "Information",
"System": "Warning",
"Microsoft": "Warning"
},
"Console": {
"IncludeScopes": true
}
}
我不明白为什么它不起作用。
注意:我在这个项目中有 6 个 API,其中 1 个成功完成上述更改,5 个失败并出现上述错误。