Модуль "aspnetcorev2.dll" не удалось загрузить - PullRequest
0 голосов
/ 14 января 2019

Недавно я попытался установить ASP.NET Core / .NET Core: Runtime & Hosting Bundle версии 2.2 на машину с Windows Server 2008 R2 SP1 . Однако после установки IIS перестает работать и выдает ошибку 503 Service unavailable для всех приложений, размещенных в нем. После проверки пулов приложений я вижу, что пулы просто закрываются.

В окне просмотра событий я вижу следующее сообщение об ошибке -

Модуль DLL C: \ Program Files (x86) \ IIS \ Asp.Net Core Модуль \ V2 \ aspnetcorev2.dll не удалось загрузить. Данные являются ошибкой.

Я попытался установить пул на 32/64 бита, но ошибка та же. Кто-нибудь еще сталкивался с этой проблемой или у нее есть решение?

Ответы [ 2 ]

0 голосов
/ 31 января 2019

После прочтения следующих документов -

Устранение неполадок ядра ASP.NET на IIS

и

Справочник по распространенным ошибкам для службы приложений Azure и IIS с ASP.NET Core

Я узнал, что ASP.NET Core / .NET Core: среда выполнения и хостинг (последние версии) зависит от Microsoft Visual C ++ 2015 Redistributable . На рассматриваемой машине были установлены более ранние версии vc ++ redist . После установки указанной версии распространяемых (32- и 64-разрядных) все снова заработало.

Забавно, что Установщик ASP.NET Core / .NET Core: пакет времени выполнения и хостинг версии 2.2 во время установки не выдавал никаких ошибок или предупреждений об отсутствующем vc ++ 2015 redist .

0 голосов
/ 14 января 2019

Этот aspnetcorev2.dll на самом деле является модулем ASP.NET Core 2.0, обычно называемым ANCM. Этот модуль нуждается в некоторой настройке и настройке, если ASP.NET Core 2.0 / 2.1 / 2.2 будет работать поверх IIS и использовать IIS в качестве основного прокси-сервера перед переходом на оригинальный движок Kestrel ASP.NET Core, а также вызываться модель.

Это важно, на других платформах, кроме Windows, все запросы направляются непосредственно в Kestrel и обслуживаются непосредственно Kestrel. Поэтому в IIS необходимо выполнить специальную настройку конфигурации, чтобы использовать Kestrel в IIS.

Для получения дополнительной информации о ANCM на IIS, пожалуйста, обратитесь к официальным документам Microsoft: https://docs.microsoft.com/en-us/aspnet/core/host-and-deploy/aspnet-core-module?view=aspnetcore-2.2

ПРИМЕЧАНИЕ: хотя эта страница предназначена для .NET Core 2.2, она по-прежнему применима для .NET 2.0 / 2.1.

Исходя из вашей ошибки, есть вероятность, что DLL-библиотека ANCM находится вне досягаемости результирующей DLL вашего приложения. Убедитесь, что файлы ANCM dll находятся в вашей результирующей скомпилированной папке, а не снаружи. Также убедитесь, что вы используете RTM или официальную версию .NET Core 2.0 / 2.1 / 2.2 вместо ежедневной сборки, поскольку ежедневная сборка .NET Core 2.0 / 2.1 / 2.2 может привести к некоторым странным ошибкам, поскольку их полное распространение DLL-библиотеки времени выполнения могут быть не полностью согласованными.

Для получения дополнительной информации об устранении неполадок ANCM в ASP.NET Core 2.x, пожалуйста, обратитесь к этим официальным документам MS: https://docs.microsoft.com/en-us/aspnet/core/host-and-deploy/iis/troubleshoot?view=aspnetcore-2.2

ОБНОВЛЕНИЕ № 1:

Основываясь на комментариях ниже, я добавляю эту дополнительную информацию: Вы должны очистить все кэши nuget на своем компьютере, восстановить и снова запустить MSBUILD. Если вы используете .NET Core 2.1 в качестве платформы для своего приложения ASP.NET Core 2.1, то если вы устанавливаете .NET Core 2.2 без обновления ссылок вашего приложения до v2.2, есть вероятность, что ссылки все еще перепутаны.

Или для лучшей практики используйте файл global.json для строгой компиляции приложения, чтобы всегда использовать .NET Core 2.1 SDK с определенной версией, независимо от того, какая последняя версия .NET Core SDK установлена ​​на вашем компьютере. Это также важно, потому что по умолчанию компилирует приложение .NET Core всегда будет пытаться использовать последний SDK, доступный на вашем компьютере, а предыдущая существующая более старая версия будет игнорироваться.

Настройка global.json описана здесь: https://docs.microsoft.com/en-us/dotnet/core/tools/global-json

...