找不到 log4net .net 核心 3.1 方法

log4net .netcore 3.1 method not found

背景: 这是一个 .netcore 3.1 网站 api。它引用一个 DLL,该 DLL 引用一个 SDK 来创建与第三方应用程序的连接。 创建服务器对象时(在 DLL 中)它抛出以下错误:

 .net core app
      - DLL containing legacy methods
           - DLL instantiates an SDK server object throwing log4net error

我添加了 Microsoft.Extensions.Logging.Log4Net.AspNetCore nuget 包并尝试了记录器工厂方式:

 public void Configure(IApplicationBuilder app, IWebHostEnvironment env, ILoggerFactory loggerFactory)
    {
        loggerFactory.AddLog4Net();

我也试过这个:https://stackify.com/making-log4net-net-core-work/

我在解决方案中也有一个 log4net.config。关于如何解决错误的任何建议?

A​​pache 丢失了用于签署 log4net 程序集的私钥,因此旧版本的 log4net 程序集具有不同的 public 密钥令牌。

没有足够的信息可以知道这是否是您的问题,但听起来可能是相关的。

如果你有一个依赖于旧版本 log4net 和旧 public 密钥令牌的依赖项,但你解析了一个新版本的 log4net(因为你的项目直接引用它或你的另一个dependencies 确实如此)那么只要针对旧 log4net 编译的代码调用其方法之一,您就可以在运行时获得程序集加载异常或缺少方法异常。

This is because the type names contain the public key token.

对此的一般修复是确保您的依赖关系树中只有一个版本的 log4net(或者至少所有具有相同 public 密钥令牌的版本)。