log 4net .netcore 3.1 метод не найден - PullRequest
2 голосов
/ 13 марта 2020

Справочная информация. Это веб-интерфейс .netcore 3.1. Он ссылается на DLL, которая ссылается на SDK для создания соединений со сторонним приложением. При создании объекта сервера (в DLL) выдается следующая ошибка:

error message

 .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 в решении. Любой совет, как устранить ошибку?

enter image description here

1 Ответ

1 голос
/ 14 марта 2020

Apache потерял закрытый ключ, который они использовали для подписи сборок журнала 4net, поэтому в старых версиях сборок журнала 4net есть другой общедоступный ключ c.

Недостаточно информации знать, что это вас кусает, но, похоже, это может быть связано.

Если у вас есть зависимость, которая зависит от старой версии журнала 4net со старым ключом publi c, но вы разрешаете новую версию журнала 4net (либо потому, что ваш проект ссылается на нее) непосредственно или одна из ваших других зависимостей), тогда вы можете получить либо исключения загрузки сборки, либо пропущенные исключения метода во время выполнения всякий раз, когда код, скомпилированный со старым журналом 4net, вызывает один из его методов.

Это это потому, что имена типов содержат ключ-ключ publi c.

Общее исправление для этого состоит в том, чтобы убедиться, что в вашем дереве зависимостей есть только одна версия журнала 4net (или, по крайней мере, все версии с одним и тем же ключом c).

...