Ошибка Kestrel: не удается загрузить Microsoft.Extensions.Logging.Abstractions
У меня был очень простой проект Kestrel / ASP.NET Core, успешно развернутый на моем сервере Windows 2008 R2.. (начался с пустого веб-проекта + IgetityServer4 nuget. Я следил за этой страницей "Начало работы")
Таким образом, я мог изначально получить документ JSON 'discovery'.
Затем ( согласно этому руководству) я добавил к нему несколько пакетов NuGet, некоторые виды /CSS и т. Д.
- Microsoft.AspNetCore.Mvc -Version 1.1.0
- Microsoft.ApsNetCore.StaticFiles -Version 1.1.0
Модернизированное решение отлично работает на моем Win7 dev box, но после повторного развертывания... Теперь я получаю страницу с ошибкой 502.5. Если я захожу на сервер и пытаюсь "запустить" исполняемый файл через командную строку... Я вижу эту ошибку:
Необработанное исключение: System.IO.FileLoadException: не удалось загрузить файл или сборку 'Microsoft.Extensions.Logging.Abstractions, Version=1.1.1.0, Culture= нейтральный,PublicKeyToken=adb9793829ddae60' или одну из ее зависимостей. Определение манифеста обнаруженной сборки не соответствует ссылке на сборку. (Исключение из HRESULT: 0x80131040) в Ross.Web.Applications.Identity.Program.Main(String[] args)
Где я неправ?
Я вижу вышеупомянутую DLL, Microsoft.Extensions.Logging.Abstractions
, опубликованные в файловой системе сервера. Я предполагаю, что мне нужно сделать редирект привязки или что-то в этом роде, но я слишком новичок в ядре, чтобы знать, как это сделать.
ОБНОВИТЬ
После обновления моих пакетов NuGet до последней.. ошибка похожа, но теперь она не может найти: Microsoft.AspNetCore.Hosting.Abstractions, Version=1.1.2.0
3 ответа
Хорошо, я должен был очистить каталог моего сервера.. и сделать новое повторное развертывание. Я видел другие ответы об удалении "корзины", но был сбит с толку, так как core
веб-развертывания не имеют реального /bin
каталог.
Теперь, я принимаю это, чтобы означать, "Очистить двоичные файлы... где бы они ни были"
Ребята, у которых в решении несколько проектов, обратите внимание:
Это происходит главным образом потому, что в вашем решении есть несколько проектов, и упомянутый пакет установлен в обоих из них, но с разными версиями.
Предположим, что исключение похоже на следующее:
Просто прекратите отладку и перейдите к Manage NuGet Packages for Solution
и найдите этот пакет на установленной вкладке:
Как видите, у меня есть этот пакет в двух проектах с разными версиями, и в этом суть! Просто обновите более низкую версию до более высокой, и все готово.
Это общая проблема при смешивании основных зависимостей asp.net 1.1.0 и 1.1.1.
Самое простое решение - обновить все зависимости до 1.1.1. Если это невозможно, вам нужно будет добавить перенаправление привязки, чтобы перенаправить зависимости 1.1.1 в целевые сборки 1.1.0.
После того, как вы измените эти зависимости или добавите перенаправления привязки, очистите папку you / bin локально и включите очистку при следующей сборке.