系统异常:找不到方法:“ILoggerFactory.AddConsole(Microsoft.Extensions.Logging.ILoggerFactory, Microsoft.Extensions.Logging.LogLevel)”

3

我正在尝试将 .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使用相同的更改失败了。


1
请提供给我们那段代码,同时更新您的问题并告知日志记录器在应用程序中的位置以及您的配置。另外,请尝试添加我建议的Nugget包,它可能无法解决问题,但会出现一些不同的错误。 - panoskarajohn
@panoskarajohn 我更新了我的问题,请你看一下。 - kamini kumari
尝试删除 logging.AddConsole();,但仍然出现相同的错误。 - kamini kumari
1
您的日志记录包没有问题,在调用栈中更深处(略去了什么),应该显示哪个组件在调用这些已删除的旧API。 - davidfowl
1
你能分享一下应用程序的.csproj文件内容吗?这样我们就可以知道安装的包版本。从堆栈跟踪来看,你的应用程序似乎是一个Asp.net Core MVC应用程序,对吗? - Zhi Lv
显示剩余10条评论
1个回答

0

我在讨论中看到John给出了正确的建议。在Visual Studio中,转到NuGet - Solution并更新所有需要更新的包。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接