Ошибка HTTP 502.5 - Ошибка запуска ANCM вне процесса после обновления до ASP.NET Core 2.2

После обновления моего проекта до ASP.NET Core 2.2 я попытался запустить приложение (локально, конечно), и в браузере появилось сообщение об ошибке, как на скриншоте ниже.

enter image description here

больше не сообщалось об ошибках в Visual Studio Explorer Explorer. Я не знаю, что случилось.

Ответ 1

Мое решение:

  • удалить все проекты с каталогом
  • создавать новые проекты
  • скопировать все файлы кроме program.cs и startup.cs
  • ручное копирование из автозагрузки и программных классов в новые startup.cs и новые program.cs

Работает.

Ответ 2

В моем случае я обновил некоторые пакеты nuget до net core 2.2, но у меня не было установлено net core 2.2 sdk, поэтому я зашел на сайт net core, чтобы загрузить последнюю версию пакета sdk или среды выполнения, а затем сделал net stop was /y а затем net start w3svc в CMD в качестве администратора. Проблема решена для меня.

Ответ 3

Я столкнулся с этой проблемой и нашел другое решение. Для меня это было то, что у меня был пакет, который был устаревшим с приложением (я обновил его на NuGet, и библиотека не была заменена в производстве). Обновление пакета исправило это для меня.

Обратите внимание: мне пришлось вручную запустить dotnet.exe с dll проекта, чтобы увидеть сообщение, которое исправило это для меня.

Надеюсь, что это поможет кому-то еще в будущем.

Ответ 4

Я столкнулся с этой ошибкой после попытки публикации с VS2017 на рабочий сервер Windows 2016. (Это нормально работало в IIS Express на моем локальном ПК с Win10.)

Я обновил пакеты, все версии соответствовали и обновились в моем коде, соответствие версий ядра .net, перезапустите IIS, перезагрузите компьютер... без радости.

В меню "Публикация"> "Настройка"> "Настройки" (левая вкладка) мне нужно было установить Target-runtime с "Portable" на "win-x64" (или что-либо, что имеет отношение к вашей среде). Я также выбрал "Удалить дополнительные файлы в месте назначения".

"Портативный" - это настройка по умолчанию. Я не уверен, что требуется для правильной работы среды "Portable", но может сэкономить кому-то еще некоторое время, если среда "Portable" вам не нужна.

enter image description here

Ответ 5

В моем случае это был неверно установленный уровень журнала в appsettings.json. Вместо предупреждения у меня был Warn, и это привело к падению приложения с ошибкой выше.

Ответ 6

Я столкнулся с этой проблемой сегодня с моего хостинга - локально все в порядке, но как только я публикую, я получаю эту ошибку.

Я просмотрел пакеты и обнаружил, что некоторые компоненты ядра .net были обновлены до версии 3.0 Preview.

Затем я изменил параметр сборки в VS2019 с "Зависящего от платформы" на "Автономный". Построение и публикация заняли в 5 раз больше времени, но теперь это работает.

Сейчас я проверяю с технической поддержкой хоста, что может быть проблемой - официально они поддерживают только 2.1/2.2, так что это могут быть эти пакеты из 3.0 Preview, однако целевая сборка 2.2.

Ответ 7

Если перезагрузка проекта и ручное копирование классов Program и Startup сработало для вас, то что-то явно было испорчено. Есть некоторые большие проблемы с этим. Использовать модель хостинга OutOfProcess можно, но с .Net Core 2.2 вы сможете использовать модель хостинга InProcess, поскольку она, естественно, быстрее: все обрабатывается в IIS без дополнительного HTTP-перехода между IIS и сервером вашего приложения Kestrel.,

Если вы щелкнете правой кнопкой мыши по файлу своего проекта в обозревателе решений Visual Studio, убедитесь, что тег AspNetCoreModuleName имеет значение AspNetCoreModuleV2 (в отличие от старого AspNetCoreModule). Также проверьте журнал событий приложений Windows, чтобы определить потенциального виновника. Даже если сообщения об ошибках несколько загадочны, они могут указывать на точный номер строки в коде, вызвавшем сбой.

Наконец, если вы используете CI/CD с TFS, в файле appsettings.json могут быть переменные окружения, которые не были должным образом заменены фактическими значениями (URL-адресами и т.д.).

Ответ 8

Эта ошибка начала появляться на нашем сервере Dev. Я использовал эту команду публикации, которая создает "автономную" папку файлов для развертывания.

dotnet publish -c release -r win7-x64 --output:bin/self_contained

Мое исправление состояло в том, чтобы вместо этого опубликовать "зависящее от фреймворка" развертывание, используя следующую команду:

dotnet publish --output:bin/framework_dependent

На сервере dev было установлено несколько версий .NET Core (2.2.3 и 2.2.5) в этой папке * C:\Program Files\dotnet\shared

Я до сих пор не понимаю, почему независимая публикация не работает. Вы могли бы подумать, что автономная публикация будет более надежным методом, но в моем случае это не так.

Это сообщение в блоге .NET Core было полезным.

Ответ 9

Я получил эту же ошибку при развертывании основного приложения .Net, которое предназначалось для .Net Framework на сервере Windows. Я проверил средство просмотра событий на сервере и оказалось, что на сервере не установлено .net 4.7.2.

Установка его решила проблему для меня.

Ответ 10

Мои проблемы были искажены в файле appsetttings.json. Я включил стандартное ведение журнала через web.config и смог получить основное исключение, выбрасывающее эту ошибку.

Ответ 11

Еще один сценарий, который вызвал эту проблему для меня:

Я запускаю удостоверение пула приложений с учетной записью службы, и мне пришлось запустить dotnet dev-certs https под этим пользователем, чтобы избавиться от "System.InvalidOperationException: Невозможно настроить конечную точку HTTPS". во время запуска.

Ответ 12

Та же неудача сказалась на проекте публикации. Эта проблема связана с последним пакетом Microsoft.AspNetCore.App. Просто уменьшите его с 2.2.x до 2.2.0

Ответ 13

Похоже, у меня была такая же проблема. Это происходит потому, что если у вас нет решения global.json в решении, тогда VS build (опубликует) основное приложение .net с последней версией, установленной на вашем компьютере. Итак, я делаю следующее решение:

добавьте файл global.json с версией ядра .net.

{
   "sdk": {
      "version": "2.2.402"
   }
}

От docs.microsoft.com:

global.json может быть размещен в любом месте иерархии файлов. Интерфейс командной строки ищет в каталоге проекта первый файл global.json, который он находит. Вы контролируете, к каким проектам применяется данный global.json, по его месту в файловой системе..NET CLI ищет файл global.json, итеративно перемещаясь по пути вверх от текущего рабочего каталога. Первый найденный файл global.json указывает используемую версию. Если эта версия установлена, эта версия используется. Если SDK, указанный в global.json, не найден,.NET CLI выполняет откат до последней установленной версии SDK. Откат вперед аналогичен поведению по умолчанию, когда файл global.json не найден.

https://docs.microsoft.com/en-us/dotnet/core/versions/selection

Ответ 14

Будьте внимательны при публикации.

Когда я публикую его в моем PreProd-окружении, этот конф хорошо работает: Портативный

Но на моей среде Prod, что Conf не работает. Я должен был выбрать конкретное: обоюдного x64

Я не знаю причину этого. Если кто-то знает, я буду рад узнать!