我正在尝试将 .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)'。
这是堆栈跟踪的开头
fail: 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,一个API成功地使用了以上更改,而其他5个API使用相同的更改失败了。