Развернуть приложение ASP.NET Core 5 в существующей службе приложений Azure?

У меня есть существующая служба приложений Azure, работающая на ASP.NET Core 3.x. Я обновил приложение до сегодняшнего выпуска ASP. NET Core 5. Это отлично работает на моем локальном сервере IIS Express. Однако когда я публикую приложение в службе приложений с помощью Visual Studio 2019, я получаю следующую ошибку:

Ошибка HTTP 500.31 - ANCM не удалось найти собственные зависимости

Общие решения этой проблемы:

Указанная версия Microsoft.NetCore.App или Microsoft.AspNetCore.App не найдена.

При включении подробных ошибок я получаю следующую дополнительную информацию:

It was not possible to find any compatible framework version 
The framework 'Microsoft.AspNetCore.App', version '5.0.0' was not found.

The following frameworks were found: 
2.1.20 at [D:\Program Files (x86)\dotnet\shared\Microsoft.AspNetCore.App] 
2.1.22 at [D:\Program Files (x86)\dotnet\shared\Microsoft.AspNetCore.App] 
2.2.11 at [D:\Program Files (x86)\dotnet\shared\Microsoft.AspNetCore.App] 
2.2.14 at [D:\Program Files (x86)\dotnet\shared\Microsoft.AspNetCore.App] 
3.0.3 at [D:\Program Files (x86)\dotnet\shared\Microsoft.AspNetCore.App] 
3.1.6 at [D:\Program Files (x86)\dotnet\shared\Microsoft.AspNetCore.App] 
3.1.8 at [D:\Program Files (x86)\dotnet\shared\Microsoft.AspNetCore.App] 

You can resolve the problem by installing the specified framework and/or SDK. 

The specified framework can be found at:
https://aka.ms/dotnet-core-applaunch?framework=Microsoft.AspNetCore.App&framework_version=5.0.0&arch=x86&rid=win10-x86

Я понял, что ASP.NET Core 5 будет немедленно доступен в службах приложений Azure. Я пропустил шаг? Как я могу опубликовать веб-приложение ASP.NET Core 5 в службе приложений Azure? Или мне все еще нужно подождать, пока среда выполнения .NET 5 не станет доступной в Azure?


person Jeremy Caney    schedule 10.11.2020    source источник


Ответы (1)


Это не совсем понятно из упомянутые примечания к выпуску, но для того, чтобы воспользоваться преимуществами нового функция раннего доступа к службе приложений (объявление), вам необходимо явно настроить службу приложений для использования стек .NET 5.

Настройка существующей службы приложений для .NET 5

Чтобы сделать это через портал Azure для существующей службы приложений, выполните следующие действия:

  1. Перейдите в службу приложений, которую хотите обновить.
  2. Щелкните Configuration на левой панели навигации.
  3. Нажмите Общие настройки в навигации на уровне страницы.
  4. В разделе Настройки стека выберите .NET
  5. В разделе Версия платформы выберите .NET 5.

Примечание. Технически, как только вы это сделаете, у вас будет установлена ​​среда выполнения .NET 5, и вы сможете вернуться, например, к стек среды выполнения .NET Core. Однако это помешает вам получить ранний доступ к последующим обновлениям .NET, поэтому я бы не рекомендовал это.

Настройка новой службы приложений для .NET 5

Это согласие на ранний доступ к службе приложений гораздо более явное при настройке новой службы приложений через портал Azure. В этом случае при создании службы приложений вам будет предложено выбрать стек среды выполнения, в котором .NET 5 явно помечен как .NET 5 (ранний доступ) .

Примечание.. Если у вас уже есть другая служба приложений, настроенная для использования раннего доступа к службе приложений в рамках того же плана службы приложений, среда выполнения .NET 5 будет уже установлена ​​и доступна. Это связано с тем, что среды выполнения .NET совместно используются службами приложений в рамках одного плана службы приложений.

Предупреждения публикации Visual Studio

Даже с функцией раннего доступа вы можете по-прежнему получать следующее предупреждение при публикации из Visual Studio 2019 16.8, если у вас включены проверки совместимости версий:

Для вашего приложения требуется среда выполнения .NET Core 5.0.0, но служба приложений Microsoft Azure поддерживает только следующие версии: 2.1.20, 2.1.22, 2.2.11, 2.2.14, 3.0.3, 3.1.6 и 3.1. 8.

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

Аналитика приложений

В качестве предупреждения: текущая реализация функция раннего доступа к службам приложений пока не поддерживает интеграцию Application Insights. Я создал проблему с запросом обновлений статуса относительно совместимости Application Insights назад в ноябре 2020 года, но я не жду решения в ближайшее время: следующий поток был закрыт без разрешения.

Если вы по-прежнему полагаетесь на интеграцию Application Insights с Azure, я рекомендую вам перейти на реализацию SDK.

Примечание. Настройка пакета SDK Application Insights в ASP.NET Core значительно проще, чем в более ранних версиях .NET Framework, и требует гораздо меньше стандартного кода.

Альтернативы

В качестве альтернативы вы можете выбрать развертывание с использованием режима Автономного развертывания в своем профиле публикации (*.pubxml). Такой подход требовался для новых выпусков .NET Core в службах приложений Azure до .NET 5, и он по-прежнему поддерживается сегодня.

person Jeremy Caney    schedule 10.11.2020
comment
Очень признателен! - person Leonard Lewis; 19.11.2020
comment
На .NET Core 3.1 все было хорошо, я обновился до .NET 5, и служба приложений не работает. Я пытался выяснить, что вызывает проблему, копаясь в журналах и диагностических инструментах. Все работает, как ожидалось, локально, но служба приложения выдает неверный запрос 400 (неверное имя хоста) или возвращает 500.31 ANCM Failed to Find Native Dependencies (указанная версия Microsoft.NetCore.App или Microsoft.AspNetCore.App не найдена). . Любые идеи? Это расстраивает. - person Nexus; 26.11.2020
comment
@Nexus: это может быть связано с тем, что зависимость по-прежнему полагается на более старую версию SDK, которая все еще может присутствовать локально или в настроенной службе приложений .NET Core. Если вы еще этого не сделали, я бы порекомендовал временно включить UseDeveloperExceptionPage() для выявления конкретной ошибки. обнаружен. (Эта ссылка - которая относится к моему предыдущему ответу - содержит более подробную информацию об устранении неполадок 500.31 в Azure, а также простой пример.) - person Jeremy Caney; 26.11.2020
comment
@JeremyCaney Большое спасибо, я попробую и перезапущу приложение в режиме разработки. Я перепробовал все, что мог придумать. Очистил папку wwwroot в Kudu и повторно развернул, развернул как автономное приложение, ничего не сработало. Я дважды проверил, что решение предназначено для .NET 5, и все пакеты NuGet обновлены. библиотеки классов предназначены для .NET Standard 2.1. Я оставлю ответ, если смогу разобраться. - person Nexus; 26.11.2020
comment
Если это поможет, для существующей службы приложений я внес изменения в .NET / .NET 5, но затем мне пришлось повторно развернуть мой последний выпуск конвейера. - person obaylis; 28.12.2020
comment
К вашему сведению: прошло пять месяцев с момента запуска ASP.NET Core 5.0, а Azure все еще не поддерживает конфигурацию Application Insights с ранним доступом без кода. Учитывая это, я бы рекомендовал перейти на Application Insights SDK, для которого требуется всего несколько строк кода для базовой конфигурации на стороне сервера. - person Jeremy Caney; 21.03.2021