Поделиться через


Развертывание приложений ASP.NET Core в Службе приложений Azure

Примечание.

Это не последняя версия этой статьи. В текущей версии см. версию .NET 10 этой статьи.

Предупреждение

Эта версия ASP.NET Core больше не поддерживается. Дополнительные сведения см. в политике поддержки .NET и .NET Core. В текущей версии см. версию .NET 10 этой статьи.

Служба приложений Azure — это платформа облачных вычислений Microsoft, предназначенная для размещения веб-приложений, включая ASP.NET Core.

Шаблоны корпоративных веб-приложений

Рекомендации по созданию надежного, безопасного, производительного, тестового и масштабируемого приложения ASP.NET Core см. в шаблонах веб-приложений Enterprise. Полный пример веб-приложения с высоким качеством рабочей среды, реализующий шаблоны, доступен.

Полезные ресурсы

документация по службе приложений — это домашняя документация по приложениям Azure, учебники, примеры, руководства и другие ресурсы. Размещению приложений ASP.NET Core посвящены следующие два руководства.

Создание веб-приложения ASP.NET Core в Azure
Создайте веб-приложение ASP.NET Core и разверните его в службе приложений Azure на базе Windows с помощью Visual Studio.

Создание приложения ASP.NET Core в Службе приложений в Linux
Создайте веб-приложение ASP.NET Core и разверните его в службе приложений Azure на базе Linux с помощью командной строки.

Подпишитесь на репозиторий объявлений о Службе приложений и следите за проблемами. Команда службы App Service регулярно публикует объявления и сценарии, появляющиеся в App Service.

Следующие статьи входят в документацию по ASP.NET Core.

Публикация приложения ASP.NET Core в Azure с помощью Visual Studio
Узнайте, как развернуть приложение ASP.NET Core в службе приложений Azure с использованием Visual Studio.

Создание первого конвейера
Настройте сборку CI для приложения ASP.NET Core, затем создайте выпуск для непрерывного развертывания в Azure App Service.

Песочница веб-приложений Azure
Сведения об ограничениях среды выполнения службы приложений Azure, создаваемых платформой приложений Azure.

Устранение неполадок и отладка проектов ASP.NET Core
Понимание и устранение неполадок, связанных с возникновением ошибок и предупреждений в проектах ASP.NET Core.

Конфигурация приложений

Платформа

Архитектура платформы (x86/x64) приложения служб приложений устанавливается в параметрах приложения на портале Azure для приложений, размещенных на вычислительном уровне серии A (базовый) или более высоком уровне размещения. Убедитесь, что параметры публикации приложения, например в профиле публикации Visual Studio (.pubxml), соответствуют параметрам в конфигурации службы приложения на портале Azure.

ASP.NET Core приложения могут быть опубликованы как зависящими от платформы, так как среды выполнения для 64-разрядных (x64) и 32-разрядных (x86) приложений присутствуют в службе приложений Azure. Пакет SDK для .NET Core, доступный в Службе приложений, является 32-разрядным, но вы можете развертывать созданные локально 64-разрядные приложения с помощью консоли Kudu или процесса публикации в Visual Studio. Дополнительные сведения см. в разделе Публикация и развертывание приложения.

Служба приложений Azure предоставляет среду выполнения для 32-разрядных (x86) приложений с нативными зависимостями. Пакет SDK для .NET Core, доступный в Службе приложений, является 32-разрядным.

Дополнительные сведения о компонентах и методах распространения платформы .NET Core, таких как сведения о среде выполнения .NET Core и пакете SDK для .NET Core, см. в разделе о .NET Core: Композиция.

Пакеты

Включите следующие пакеты NuGet, чтобы использовать возможности автоматического ведения журнала для приложений, развернутых в Службе приложений Azure:

  • Microsoft.AspNetCore.AzureAppServices.HostingStartup использует IHostingStartup для интеграции ведения журналов ASP.NET Core со Службой приложений Azure. Пакет Microsoft.AspNetCore.AzureAppServicesIntegration включает дополнительные функции для ведения журналов.
  • Microsoft.AspNetCore.AzureAppServicesIntegration выполняет AddAzureWebAppDiagnostics для добавления поставщиков ведения журналов диагностики из Службы приложений Azure в пакет Microsoft.Extensions.Logging.AzureAppServices.
  • Microsoft.Extensions.Logging.AzureAppServices предоставляет реализации средства ведения журналов в поддержку журналов диагностики службы приложений Azure и функций потоковой передачи журналов.

Приведенные выше пакеты должны быть явно указаны в файле проекта приложения.

Переопределение конфигурации приложения с помощью портала Azure

Параметры приложения на портале Azure позволяют задать переменные среды для приложения. Дополнительные сведения см. в следующих ресурсах:

Сценарии использования прокси-сервера и подсистемы балансировки нагрузки

Промежуточное ПО для интеграции IIS, которое настраивает промежуточное ПО для переадресации заголовков при размещении вне процесса, и модуль ASP.NET Core настраиваются на пересылку схемы (HTTP/HTTPS) и удаленного IP-адреса, откуда поступил запрос. Для приложений, размещенных за дополнительными прокси-серверами и подсистемами балансировки нагрузки, может потребоваться дополнительная настройка. Дополнительные сведения см. в разделе Настройка ASP.NET Core для работы с прокси-серверами и подсистемами балансировки нагрузки.

Мониторинг и ведение журналов

Приложения ASP.NET Core, развернутые в Службе приложений, автоматически получают расширение Службы приложений для интеграции ведения журналов ASP.NET Core. Это расширение обеспечивает интеграцию ведения журналов для приложений ASP.NET Core, развернутых в Службе приложений Azure.

Приложения ASP.NET Core, развернутые в Службе приложений, автоматически получают расширение Службы приложений ASP.NET Core Logging Extensions. Это расширение обеспечивает интеграцию ведения журналов для приложений ASP.NET Core, развернутых в Службе приложений Azure.

Сведения о мониторинге, ведении журналов, а также поиске и устранении неполадок см. в следующих статьях.

Мониторинг приложений в Службе приложений Azure
Узнайте, как просмотреть квоты и метрики для приложений и планов служб приложений.

Включение функции ведения журналов диагностики для приложений в Службе приложений Azure
Сведения о том, как включать и где искать функцию ведения журнала диагностики для кодов статуса HTTP, невыполненных запросов и активности веб-сервера.

Обработка ошибок в ASP.NET Core
Сведения об основных методах обработки ошибок в приложениях ASP.NET Core.

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

Устранение распространенных неполадок в Службе приложений Azure и службах IIS с помощью ASP.NET Core
См. распространенные ошибки с конфигурацией развертывания для приложений, размещенных в службе приложений Azure/IIS, и рекомендации по их устранению.

Связка ключей для защиты данных и слоты развертывания

ключи ASP.NET Core Data Protection сохраняются в папке %HOME%\ASP.NET\DataProtection-Keys . Эта папка копируется в сетевое хранилище и синхронизируется на всех машинах, где размещается приложение. Ключи не защищены в состоянии покоя. В этой папке хранится связка ключей для всех экземпляров приложения в одном и том же слоте развертывания. Отдельные слоты развертывания, такие как промежуточное хранение и производство, не используют общую связку ключей.

При переключении между разными слотами развертывания ни одна система с использованием защиты данных не сможет расшифровать хранимые данные, используя связку ключей из предыдущего слота. ASP.NET Middleware Cookie использует защиту данных для защиты своих файлов cookie. В результате пользователи выходят из приложения, использующего стандартное ASP.NET Cookie Middleware. Для того чтобы решение связки ключей не зависело от слота, используйте внешнего поставщика связки ключей, например:

  • Хранилище Blob-объектов Azure
  • Azure Key Vault
  • Хранилище SQL;
  • Кэш Redis

Дополнительные сведения см. в статье Поставщики хранилища ключей в ASP.NET Core.

Развертывание приложения ASP.NET Core, использующего предварительную версию .NET Core

Сведения о развертывании приложения, использующего предварительную версию .NET Core, см. в следующих ресурсах. Эти способы также используются в случаях, когда среда выполнения доступна, но пакет SDK не установлен в Службе приложений Azure.

См. Выбор версии .NET Core для использования для получения информации о выборе версии .NET SDK для автономных развертываний.

Указание версии пакета SDK для .NET Core с помощью Azure Pipelines

Используйте сценарии CI/CD Службы приложений Azure, чтобы настроить сборку с непрерывной интеграцией с помощью Azure DevOps. Создав сборку Azure DevOps, при необходимости настройте ее для использования определенной версии пакета SDK.

Указание версии пакета SDK для .NET Core

Если используется центр развертывания Службы приложений для создания сборки Azure DevOps, конвейер сборки по умолчанию включает шаги для Restore, Build, Test и Publish. Чтобы указать версию пакета SDK, нажмите кнопку Добавить (+) в списке заданий агента для добавления нового шага. Найдите пакет SDK для .NET Core, используя строку поиска.

Добавление шага для использования пакета SDK .NET Core

Переместите шаг на первое место в конвейере сборки, чтобы в следующих шагах использовалась указанная версия пакета SDK для .NET Core. Укажите версию пакета SDK для .NET Core. В этом примере для пакета SDK мы укажем версию 3.0.100.

Завершенный этап настройки пакета SDK

Чтобы опубликовать автономное развертывание (SCD), настройте SCD на шаге Publish и укажите идентификатор среды выполнения (RID).

Автономная публикация

Развертывание автономного приложения для предварительной версии

Объект автономного развертывания (SCD), который предназначен для предварительной версии среды выполнения, включает в развертывание среду выполнения предварительной версии.

При развертывании автономного приложения:

  • Сайт в Службе приложений Azure не требует предварительной версии расширения сайта.
  • Приложение должно быть опубликовано с использованием другого подхода, чем при развертывании, зависящем от фреймворка (FDD).

Следуйте указаниям в разделе Развертывание автономного приложения.

Использование Docker с веб-приложениями для контейнеров

Docker Hub https://hub.docker.com/_/microsoft-dotnet содержит последние предварительные версии образов Docker. Их можно использовать в качестве базового образа. Используйте образ и развертывайте в веб-приложениях для контейнеров обычным образом.

Установка расширения сайта предварительной версии

Если у вас возникли проблемы при использовании расширения сайта предварительной версии, откройте проблему dotnet/AspNetCore.

  1. На портале Azure перейдите в службу приложений.
  2. Выберите веб-приложение.
  3. В поле поиска введите "ex" для фильтрации расширений ("Extensions") или прокрутите вниз список инструментов управления.
  4. Выберите Расширения.
  5. Выберите Добавить.
  6. Выберите в списке расширение Среда выполнения ASP.NET Core {X.Y} ({x64|x86}), где {X.Y} — это предварительная версия ASP.NET Core, а {x64|x86} — платформа.
  7. Для принятия условий нажмите кнопку ОК.
  8. Нажмите OK, чтобы установить расширение.

По завершении операции устанавливается последняя предварительная версия .NET Core. Проверьте установку:

  1. Выберите Дополнительные инструменты.

  2. В разделе Дополнительные инструменты выберите Перейти.

  3. Выберите пункт меню Консоль отладки>PowerShell.

  4. По запросу PowerShell выполните следующую команду. В следующей команде вместо {X.Y} укажите версию среды выполнения ASP.NET Core, а вместо {PLATFORM} — платформу:

    Test-Path D:\home\SiteExtensions\AspNetCoreRuntime.{X.Y}.{PLATFORM}\
    

    Эта команда возвращает True, если установлена предварительная версия среды выполнения x64.

Примечание.

Архитектура платформы (x86/x64) приложения служб приложений устанавливается в параметрах приложения на портале Azure для приложений, размещенных на вычислительном уровне серии A (базовый) или более высоком уровне размещения. Убедитесь, что параметры публикации приложения, например в профиле публикации Visual Studio (.pubxml), соответствуют параметрам в конфигурации службы приложения на портале Azure.

Если приложение выполняется во внутрипроцессном режиме, а архитектура платформы настроена для 64-разрядных версий (x64), модуль ASP.NET Core использует 64-разрядную предварительную версию среды выполнения при ее наличии. Установите расширение среды выполнения ASP.NET Core {X.Y} (x64) с помощью портала Azure.

После установки предварительной версии среды выполнения (x64) выполните приведенную ниже команду в командном окне Azure Kudu PowerShell, чтобы проверить установку. Замените версию среды выполнения ASP.NET Core на {X.Y} в следующей команде:

Test-Path D:\home\SiteExtensions\AspNetCoreRuntime.{X.Y}.x64\

Эта команда возвращает True, если установлена предварительная версия среды выполнения x64.

Использование расширения сайта предварительной версии с шаблоном ARM

Если вы используете шаблон ARM для создания и развертывания приложений, можно использовать тип ресурса Microsoft.Web/sites/siteextensions, чтобы добавить расширение сайта в веб-приложение. В следующем примере расширение сайта исполняющей среды .NET 5 (x64) (AspNetCoreRuntime.5.0.x64) добавляется к приложению.

{
    ...
    "parameters": {
        "site_name": {
            "defaultValue": "{SITE NAME}",
            "type": "String"
        },
        ...
    },       
    ...
    "resources": [
        ...
        {
            "type": "Microsoft.Web/sites/siteextensions",
            "apiVersion": "2018-11-01",
            "name": "[concat(parameters('site_name'), '/AspNetCoreRuntime.5.0.x64')]",
            "location": "[resourceGroup().location]",
            "dependsOn": [
                "[resourceId('Microsoft.Web/sites', parameters('site_name'))]"
            ]
        }
    ]
}
    

Вместо заполнителя {SITE NAME} используйте имя приложения в Службе приложений Azure (например, contoso).

Публикация и развертывание приложения

Для 64-разрядного развертывания

  • Для создания 64-разрядной версии приложения используйте 64-разрядную версию пакета SDK для .NET Core.
  • Установите Платформу на 64 разряда в Конфигурации>Общие настройки службы приложений. Чтобы включить возможность выбора разрядности платформы, приложение должно использовать план обслуживания «Базовый» или более высокий.

Развертывание приложения, зависимого от платформы

Приложения, опубликованные как зависящие от платформы, являются кроссплатформенными и не включают среду выполнения .NET в развертывание. Служба приложений Azure включает в себя среду выполнения .NET.

  1. Щелкните правой кнопкой мыши проект в обозревателе решений и выберите Опубликовать. Либо выберите Сборка>Опубликовать {имя_приложения} в панели инструментов Visual Studio.
  2. В диалоговом окне Публикация выберите Azure>Далее.
  3. Выберите службу Azure.
  4. Выберите Дополнительно. Откроется диалоговое окно Публикация.
  5. Выберите группу ресурсов и план размещения или создайте новые.
  6. Выберите Готово.
  7. На странице публикации:
    • В разделе "Конфигурация" выберите значок "Изменить конфигурацию пера":
      • Убедитесь, что выбрана конфигурация Выпуск.
      • В раскрывающемся списке Режим развертывания выберите вариант Зависит от платформы.
      • В раскрывающемся списке Целевая среда выполнения выберите нужную среду выполнения. Значение по умолчанию — win-x86.
    • Чтобы удалить дополнительные файлы после развертывания, откройте область Параметры публикации файлов и установите флажок для удаления дополнительных файлов в месте назначения.
    • Выберите Сохранить.
    • Выберите Опубликовать.

Автономное развертывание приложения

Публикация приложения как автономного создает исполняемый файл для конкретной платформы. Выходная папка публикации содержит все компоненты приложения, в том числе библиотеки .NET и целевую среду выполнения. Дополнительные сведения см. в статье [Публикация автономной]/dotnet/core/deploying/#publish-self-contained). Используйте Visual Studio или интерфейс командной строки .NET для автономного развертывания (SCD).

  1. Щелкните правой кнопкой мыши проект в обозревателе решений и выберите Опубликовать. Либо выберите Сборка>Опубликовать {имя_приложения} в панели инструментов Visual Studio.
  2. В диалоговом окне Публикация выберите Azure>Далее.
  3. Выберите службу Azure.
  4. Выберите Дополнительно. Откроется диалоговое окно Публикация.
  5. Выберите группу ресурсов и план размещения или создайте новые.
  6. Выберите Готово.
  7. На странице публикации:
    • В разделе "Конфигурация" выберите значок "Изменить конфигурацию пера":
      • Убедитесь, что выбрана конфигурация Выпуск.
      • В раскрывающемся списке Режим развертывания выберите вариант Автономный.
      • В раскрывающемся списке Целевая среда выполнения выберите нужную среду выполнения. Значение по умолчанию — win-x86.
    • Чтобы удалить дополнительные файлы после развертывания, откройте область Параметры публикации файлов и установите флажок для удаления дополнительных файлов в месте назначения.
    • Выберите Сохранить.
    • Выберите Опубликовать.

Параметры протокола (HTTPS)

Привязки безопасных протоколов позволяют указать сертификат, который следует использовать при ответе на запросы по HTTPS. Для привязки требуется допустимый закрытый сертификат (PFX), выданный для определенного имени узла. Дополнительные сведения см. в руководстве: Привязка существующего пользовательского SSL-сертификата к службе приложений Azure.

Преобразуйте web.config

Если вам нужно преобразовать web.config при публикации (например, задать переменные среды на основе конфигурации, профиля или среды), см. статью Преобразование web.config.

Дополнительные ресурсы

Служба приложений Azure на Windows Server использует Internet Information Services (IIS). Kestrel и YARP на интерфейсе обеспечивают модуль балансировки нагрузки. Технологии IIS посвящены следующие статьи.