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

Примечание.

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

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

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

Внимание

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

В текущем выпуске см . версию .NET 8 этой статьи.

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

Надежные шаблоны веб-приложений

См. статью "Шаблон надежных веб-приложений" for.NET видео и статьи YouTube по созданию современного, надежного, производительного, тестового, экономичного и масштабируемого приложения ASP.NET Core, будь то с нуля или рефакторинг существующего приложения.

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

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

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

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

Версию ASP.NET Core, доступную в службе приложений, см. в разделе ASP.NET Core на панели мониторинга службы приложений.

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

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

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

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

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

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

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

Платформа

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

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

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

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

Packages

Включите следующие пакеты 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 позволяют задать переменные среды для приложения. Переменные среды могут использоваться поставщиком конфигураций переменных среды.

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

Переменные среды загружаются в конфигурацию приложения при вызове CreateBuilder для сборки узла. Дополнительные сведения см. в поставщике конфигурации переменных среды.

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

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

Если приложение использует веб-узел, переменные среды загружаются в конфигурацию приложения, когда метод CreateDefaultBuilder вызывается для создания узла. Дополнительные сведения см. в статье Веб-узел .NET в ASP.NET Core и разделе Поставщик конфигурации переменных среды.

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

ПО промежуточного слоя для интеграции 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. Это расширение обеспечивает интеграцию ведения журналов для приложений 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, и рекомендации по их устранению.

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

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

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

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

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

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

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

Версию ASP.NET Core, доступную в службе приложений, см. в разделе ASP.NET Core на панели мониторинга службы приложений.

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

Указание версии пакета 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), который предназначен для предварительной версии среды выполнения, включает в развертывание среду выполнения предварительной версии.

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

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

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

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

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

Если у вас возникли проблемы при использовании расширения сайта предварительной версии, создайте запрос 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.

Примечание.

Если приложение Службы приложений размещено в среде вычислений серии A (цен. категории "Базовый") или на более высоком уровне, архитектура платформы приложения (x86 или x64) задается в его параметрах на портале Azure. Убедитесь, что параметры публикации приложения, например в профиле публикации 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, чтобы добавить расширение сайта в веб-приложение. В следующем примере расширение сайта (AspNetCoreRuntime.5.0.x64) для среды выполнения ASP.NET Core 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 использует службы IIS. Kestrel и YARP на интерфейсе предоставляют подсистему балансировки нагрузки. Технологии IIS посвящены следующие статьи.