Веб-приложение .net core 2.2: ошибка HTTP 502.5 ANCM Ошибка запуска вне процесса

Когда я развертываю приложение из Visual Studio в службу приложений Azure, используя режим, зависящий от платформы/среды выполнения, служба приложений работает правильно.

Но когда приложение развертывается с использованием CICD (с использованием VSTS), тогда служба приложения завершается с ошибкой, указанной выше в заголовке, и следующая ошибка регистрируется в файлах журнала stdout:

Error:
  An assembly specified in the application dependencies manifest (App.deps.json) was not found:
    package: 'System.Diagnostics.PerformanceCounter', version: '4.5.0'
    path: 'runtimes/win/lib/netcoreapp2.0/System.Diagnostics.PerformanceCounter.dll'

Но dll присутствует в указанном пути под .netcoreapp2.0.

Я публикую приложение с помощью агента VSTS.

Если я перезапускаю службу приложений, она работает нормально.




Ответы (3)


Поскольку он отлично работает при перезапуске службы приложений, вы можете добавить задачу Azure App Service manage для перезапуска службы приложений Azure в свой конвейер:

steps:
- task: AzureAppServiceManage@0
  displayName: 'Restart Azure App Service'
  inputs:
    azureSubscription: azureSubscriptionName
    Action: 'Restart Azure App Service'
    WebAppName: AppServiceName
person Cece Dong - MSFT    schedule 14.05.2020
comment
Не могли бы вы поделиться своим конвейером? Если вы развертываете из командной строки локально, каков результат? - person Cece Dong - MSFT; 21.05.2020
comment
если я развертываю с помощью Visual Studio, это работает, но после выпуска через конвейер служба приложений вообще не запускается. Никаких ошибок не регистрируется в stdout. - person Sagar K; 21.05.2020
comment
Не могли бы вы поделиться своим конвейером? Как насчет остановки вашего приложения или включения автономного режима для вашего приложения во время развертывания? - person Cece Dong - MSFT; 22.05.2020
comment
обязательно поделюсь - person Sagar K; 26.05.2020

Похоже, что при первой попытке запуска ваше приложение не может найти эту .dll, которая требуется на сервере. Что вы можете сделать, так это добавить это в свой файл .csproj:

<PropertyGroup>               
    <PublishWithAspNetCoreTargetManifest>false</PublishWithAspNetCoreTargetManifest>
</PropertyGroup>

Добавление приведенного выше фрагмента приведет к экспорту всех DLL, необходимых для запуска приложения (при условии, что SDK недоступен, а среда выполнения довольно легковесна, чтобы содержать несущественные библиотеки).

person Stelios Giakoumidis    schedule 14.05.2020
comment
Пробовал это, но получил ошибку: Invalid runtimeconfig.json - person Sagar K; 15.05.2020
comment
Хорошо, тогда давайте пойдем по другому пути. Вы сказали, что при развертывании из VS с использованием зависимого от Framework/Runtime режима приложение работает нормально. Давайте сделаем то же самое из devops. Когда вы публикуете в своем конвейере, передайте следующие параметры «dotnet publish -r ‹RID› --self-contained false», это будет точно воспроизводить то, что вы делаете в VS локально. Документацию по публикации dotnet см. по адресу: docs.microsoft.com/en-us/ dotnet/ядро/развертывание - person Stelios Giakoumidis; 15.05.2020

Это одна из тех ошибок, которая может возникнуть по тысяче не связанных между собой причин. -Каждый раз- я получаю эту ошибку, потому что я обновил пакеты Nuget в своем проекте, и один из этих пакетов использует версию .Net Core SDK, которую я не установил локально. Я подозреваю, что, поскольку вы используете зависимый от Framework режим, это может быть проблемой, если он изолирует вас от других SDK (не уверен, что это так, просто мысли вслух).

  • Убедитесь, что ваш .Net Core SDK обновлен.

  • Попробуйте опубликовать его и отправить вместе с ним весь фреймворк, если вы используете .Net Core в качестве серверной части (а не старый фреймворк).

  • Проверьте свои NuGet и убедитесь, что все они поддерживаются в указанной вами среде. Я видел случаи, когда сборка фреймворка 4.5 «могла бы» работать локально, но затем выдавала ошибку на сервере. Если один из них нацелен на SDK, которого нет на сервере, вы получите это.

    https://www.blakepell.com/asp-net-core-http-error-502-5-ancm-out-of-process-startup-failure

person b.pell    schedule 14.05.2020