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

Служба приложений Azure — это платформа облачных вычислений Microsoft, предназначенная для размещения веб-приложений, включая ASP.NET Core.Azure App Service is a Microsoft cloud computing platform service for hosting web apps, including ASP.NET Core.

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

Документация по службе приложений — это место, где хранятся документация, учебники, примеры, руководства и другие ресурсы, связанные с приложениями Azure.App Service Documentation is the home for Azure Apps documentation, tutorials, samples, how-to guides, and other resources. Размещению приложений ASP.NET Core посвящены следующие два руководства.Two notable tutorials that pertain to hosting ASP.NET Core apps are:

Создание веб-приложения ASP.NET Core в AzureCreate an ASP.NET Core web app in Azure
Создайте веб-приложение ASP.NET Core и разверните его в службе приложений Azure на базе Windows с помощью Visual Studio.Use Visual Studio to create and deploy an ASP.NET Core web app to Azure App Service on Windows.

Создание приложения ASP.NET Core в Службе приложений в LinuxCreate an ASP.NET Core app in App Service on Linux
Создайте веб-приложение ASP.NET Core и разверните его в службе приложений Azure на базе Linux с помощью командной строки.Use the command line to create and deploy an ASP.NET Core web app to Azure App Service on Linux.

Следующие статьи входят в документацию по ASP.NET Core.The following articles are available in ASP.NET Core documentation:

Публикация приложения ASP.NET Core в Azure с помощью Visual Studio
Сведения о публикации приложения ASP.NET Core в службе приложений Azure с помощью Visual Studio.Learn how to publish an ASP.NET Core app to Azure App Service using Visual Studio.

Непрерывное развертывание ASP.NET Core в Azure с помощью Visual Studio и Git
Сведения о создании веб-приложения ASP.NET Core с помощью Visual Studio и его развертывании в службе приложений Azure с использованием Git для непрерывного развертывания.Learn how to create an ASP.NET Core web app using Visual Studio and deploy it to Azure App Service using Git for continuous deployment.

Создание первого конвейераCreate your first pipeline
Сведения о настройке сборки CI для приложения ASP.NET Core и последующем создании выпуска непрерывного развертывания в службе приложений Azure.Set up a CI build for an ASP.NET Core app, then create a continuous deployment release to Azure App Service.

Песочница веб-приложений AzureAzure Web App sandbox
Сведения об ограничениях среды выполнения службы приложений Azure, создаваемых платформой приложений Azure.Discover Azure App Service runtime execution limitations enforced by the Azure Apps platform.

Устранение неполадок ASP.NET Core проектов
Устранение неполадок при возникновении ошибок и предупреждений в проектах ASP.NET Core.Understand and troubleshoot warnings and errors with ASP.NET Core projects.

Настройка приложенияApplication configuration

PlatformPlatform

Среды выполнения для 64-разрядных (x64) и 32-разрядных (x86) приложений находятся в Службе приложений Azure.Runtimes for 64-bit (x64) and 32-bit (x86) apps are present on Azure App Service. Пакет SDK для .NET Core, доступный в Службе приложений, является 32-разрядным, но вы можете развертывать созданные локально 64-разрядные приложения с помощью консоли Kudu или процесса публикации в Visual Studio.The .NET Core SDK available on App Service is 32-bit, but you can deploy 64-bit apps built locally using the Kudu console or the publish process in Visual Studio. Дополнительные сведения см. в разделе Публикация и развертывание приложения.For more information, see the Publish and deploy the app section.

Среды выполнения для 32-разрядных (x86) приложений с собственными зависимостями находятся в Службе приложений Azure.For apps with native dependencies, runtimes for 32-bit (x86) apps are present on Azure App Service. Пакет SDK для .NET Core, доступный в Службе приложений, является 32-разрядным.The .NET Core SDK available on App Service is 32-bit.

Дополнительные сведения о компонентах платформы .NET Core и методах распространения, например сведения о среде выполнения .NET Core и пакете SDK для .NET Core, см. в разделе "Композиция" статьи сведений о .NET Core.For more information on .NET Core framework components and distribution methods, such as information on the .NET Core runtime and the .NET Core SDK, see About .NET Core: Composition.

ПакетыPackages

Включите следующие пакеты NuGet, чтобы использовать возможности автоматического ведения журнала для приложений, развернутых в Службе приложений Azure:Include the following NuGet packages to provide automatic logging features for apps deployed to Azure App Service:

Предыдущие пакеты недоступны в метапакете Microsoft.AspNetCore.App.The preceding packages aren't available from the Microsoft.AspNetCore.App metapackage. Приложения, предназначенные для .NET Framework или ссылающиеся на метапакет Microsoft.AspNetCore.App, должны явно ссылаться на отдельные пакеты в файле проекта приложения.Apps that target .NET Framework or reference the Microsoft.AspNetCore.App metapackage must explicitly reference the individual packages in the app's project file.

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

Параметры приложений на портале Azure позволяют задать переменные среды для приложения.App settings in the Azure Portal permit you to set environment variables for the app. Переменные среды могут использоваться поставщиком конфигураций переменных среды.Environment variables can be consumed by the Environment Variables Configuration Provider.

Когда вы создаете или изменяете параметр приложения на портале Azure, при нажатии кнопки Сохранить происходит перезапуск приложения Azure.When an app setting is created or modified in the Azure Portal and the Save button is selected, the Azure App is restarted. Переменная среды доступна в приложении после перезапуска службы.The environment variable is available to the app after the service restarts.

Если приложение использует универсальный узел, переменные среды не загружаются в конфигурацию приложения по умолчанию и поставщик конфигурации должен быть добавлен разработчиком.When an app uses the Generic Host, environment variables aren't loaded into an app's configuration by default and the configuration provider must be added by the developer. Разработчик определяет префикс переменной среды при добавлении поставщика конфигурации.The developer determines the environment variable prefix when the configuration provider is added. Дополнительные сведения см. в разделах Универсальный узел .NET и Конфигурация для разных сред.For more information, see Универсальный узел .NET and the Environment Variables Configuration Provider.

Если приложение создает узел с помощью WebHost.CreateDefaultBuilder, переменные среды, которые настраивают узел, используют префикс ASPNETCORE_.When an app builds the host using WebHost.CreateDefaultBuilder, environment variables that configure the host use the ASPNETCORE_ prefix. Дополнительные сведения см. в разделах Веб-узел ASP.NET Core и Конфигурация для разных сред.For more information, see Веб-узел ASP.NET Core and the Environment Variables Configuration Provider.

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

ПО промежуточного слоя для интеграции IIS, которое настраивает ПО промежуточного слоя переадресации заголовков при размещении вне процесса, и модуль ASP.NET Core настраиваются на пересылку схемы (HTTP/HTTPS) и удаленного IP-адреса расположения, где был сформирован запрос.The IIS Integration Middleware, which configures Forwarded Headers Middleware when hosting out-of-process, and the ASP.NET Core Module are configured to forward the scheme (HTTP/HTTPS) and the remote IP address where the request originated. Для приложений, размещенных за дополнительными прокси-серверами и подсистемами балансировки нагрузки, может потребоваться дополнительная настройка.Additional configuration might be required for apps hosted behind additional proxy servers and load balancers. Дополнительные сведения см. в разделе Настройка ASP.NET Core для работы с прокси-серверами и подсистемами балансировки нагрузки.For more information, see Configure ASP.NET Core to work with proxy servers and load balancers.

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

Приложения ASP.NET Core, развернутые в Службе приложений, автоматически получают расширение Службы приложений для интеграции ведения журналов ASP.NET Core.ASP.NET Core apps deployed to App Service automatically receive an App Service extension, ASP.NET Core Logging Integration. Это расширение обеспечивает интеграцию ведения журналов для приложений ASP.NET Core, развернутых в Службе приложений Azure.The extension enables logging integration for ASP.NET Core apps on Azure App Service.

Приложения ASP.NET Core, развернутые в Службе приложений автоматически, получают расширение службы приложений и расширения для ведения журналов ASP.NET Core.ASP.NET Core apps deployed to App Service automatically receive an App Service extension, ASP.NET Core Logging Extensions. Это расширение обеспечивает интеграцию ведения журналов для приложений ASP.NET Core, развернутых в Службе приложений Azure.The extension enables logging integration for ASP.NET Core apps on Azure App Service.

Сведения о мониторинге, ведении журналов, а также поиске и устранении неполадок см. в следующих статьях.For monitoring, logging, and troubleshooting information, see the following articles:

Мониторинг приложений в Службе приложений AzureMonitor apps in Azure App Service
Сведения о том, как толковать квоты и параметры для приложений и планы службы приложений.Learn how to review quotas and metrics for apps and App Service plans.

Включение функции ведения журналов диагностики для приложений в Службе приложений AzureEnable diagnostics logging for apps in Azure App Service
Сведения о том, как включать и где искать функцию ведения журнала диагностики для кодов статуса HTTP, невыполненных запросов и активности веб-сервера.Discover how to enable and access diagnostic logging for HTTP status codes, failed requests, and web server activity.

Обработка ошибок в ASP.NET Core
Сведения об основных методах обработки ошибок в приложениях ASP.NET Core.Understand common approaches to handling errors in ASP.NET Core apps.

Устранение неполадок ASP.NET Core в службе приложений Azure и службах IIS
Сведения о диагностике проблем с развертыванием приложений ASP.NET Core в службе приложений Azure.Learn how to diagnose issues with Azure App Service deployments with ASP.NET Core apps.

Справочник по общим ошибкам в Службе приложений Azure и службах IIS с ASP.NET Core
См. распространенные ошибки с конфигурацией развертывания для приложений, размещенных в службе приложений Azure/IIS, и рекомендации по их устранению.See the common deployment configuration errors for apps hosted by Azure App Service/IIS with troubleshooting advice.

Связка ключей для защиты данных и слоты развертыванияData Protection key ring and deployment slots

Ключи для защиты данных хранятся в папке %HOME%\ASP.NET\DataProtection-Keys.Data Protection keys are persisted to the %HOME%\ASP.NET\DataProtection-Keys folder. Эта папка копируется в сетевое хранилище и синхронизируется на всех машинах, где размещается приложение.This folder is backed by network storage and is synchronized across all machines hosting the app. Во время хранения ключи не защищаются.Keys aren't protected at rest. В этой папке хранится связка ключей для всех экземпляров приложения в одном и том же слоте развертывания.This folder supplies the key ring to all instances of an app in a single deployment slot. Отдельные слоты развертывания, такие как промежуточное хранение и производство, не используют общую связку ключей.Separate deployment slots, such as Staging and Production, don't share a key ring.

При переключении между разными слотами развертывания ни одна система с использованием защиты данных не сможет расшифровать хранимые данные, используя связку ключей из предыдущего слота.When swapping between deployment slots, any system using data protection won't be able to decrypt stored data using the key ring inside the previous slot. Для защиты файлов cookie ПО промежуточного слоя ASP.NET Cookie использует защиту данных.ASP.NET Cookie Middleware uses data protection to protect its cookies. В результате пользователей, применяющих ПО промежуточного слоя ASP.NET Cookie, выбрасывает из приложения.This leads to users being signed out of an app that uses the standard ASP.NET Cookie Middleware. Для того чтобы решение связки ключей не зависело от слота, используйте внешнего поставщика связки ключей, например:For a slot-independent key ring solution, use an external key ring provider, such as:

  • Хранилище больших двоичных объектов Azure;Azure Blob Storage
  • Хранилище ключей Azure;Azure Key Vault
  • Хранилище SQL;SQL store
  • Кэш Redis.Redis cache

Дополнительные сведения можно найти по адресу: Поставщики хранилища ключей в ASP.NET Core.For more information, see Поставщики хранилища ключей в ASP.NET Core.

Развертывание предварительной версии ASP.NET Core в службе приложений AzureDeploy ASP.NET Core preview release to Azure App Service

Если приложение предназначено для предварительной версии .NET Core, воспользуйтесь одним из приведенных ниже подходов.Use one of the following approaches if the app relies on a preview release of .NET Core:

Установка расширения сайта предварительной версииInstall the preview site extension

Если у вас возникли проблемы при использовании расширения сайта предварительной версии, создайте запрос aspnet/AspNetCore.If a problem occurs using the preview site extension, open an aspnet/AspNetCore issue.

  1. Перейдите в Службу приложений на портале Azure.From the Azure Portal, navigate to the App Service.
  2. Выберите веб-приложение.Select the web app.
  3. В поле поиска введите "ex" для фильтрации расширений ("Extensions") или прокрутите вниз список инструментов управления.Type "ex" in the search box to filter for "Extensions" or scroll down the list of management tools.
  4. Выберите Расширения.Select Extensions.
  5. Нажмите Добавить.Select Add.
  6. Выберите в списке расширение Среда выполнения ASP.NET Core {X.Y} ({x64|x86}) , где {X.Y} — это предварительная версия ASP.NET Core, а {x64|x86} — платформа.Select the ASP.NET Core {X.Y} ({x64|x86}) Runtime extension from the list, where {X.Y} is the ASP.NET Core preview version and {x64|x86} specifies the platform.
  7. Для принятия условий нажмите кнопку ОК.Select OK to accept the legal terms.
  8. Нажмите OK, чтобы установить расширение.Select OK to install the extension.

По завершении операции устанавливается последняя предварительная версия .NET Core.When the operation completes, the latest .NET Core preview is installed. Проверьте установку:Verify the installation:

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

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

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

  4. По запросу PowerShell выполните следующую команду.At the PowerShell prompt, execute the following command. В следующей команде вместо {X.Y} укажите версию среды выполнения ASP.NET Core, а вместо {PLATFORM} — платформу:Substitute the ASP.NET Core runtime version for {X.Y} and the platform for {PLATFORM} in the command:

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

    Эта команда возвращает True, если установлена предварительная версия среды выполнения x64.The command returns True when the x64 preview runtime is installed.

Примечание

Если приложение Службы приложений размещено в среде вычислений серии A или на более высоком уровне, архитектура платформы приложения (x86/x64) задается в его параметрах на портале для приложений Azure.The platform architecture (x86/x64) of an App Services app is set in the app's settings in the Azure Portal for apps that are hosted on an A-series compute or better hosting tier. Если приложение выполняется во внутрипроцессном режиме, а архитектура платформы настроена для 64-разрядных версий (x64), модуль ASP.NET Core использует 64-разрядную предварительную версию среды выполнения при ее наличии.If the app is run in in-process mode and the platform architecture is configured for 64-bit (x64), the ASP.NET Core Module uses the 64-bit preview runtime, if present. Установите расширение Среда выполнения ASP.NET Core {X.Y} (x64) .Install the ASP.NET Core {X.Y} (x64) Runtime extension.

После установки предварительной версии среды выполнения x64 выполните следующую команду в командном окне Kudu PowerShell, чтобы проверить установку.After installing the x64 preview runtime, run the following command in the Kudu PowerShell command window to verify the installation. Замените версию среды выполнения ASP.NET Core на {X.Y} в команде:Substitute the ASP.NET Core runtime version for {X.Y} in the command:

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

Эта команда возвращает True, если установлена предварительная версия среды выполнения x64.The command returns True when the x64 preview runtime is installed.

Примечание

Расширения ASP.NET Core включают дополнительные функциональные возможности для ASP.NET Core в службах приложений Azure, например включение ведения журналов Azure.ASP.NET Core Extensions enables additional functionality for ASP.NET Core on Azure App Services, such as enabling Azure logging. Расширение устанавливается автоматически при развертывании из Visual Studio.The extension is installed automatically when deploying from Visual Studio. Если расширение не установлено, установите его для приложения.If the extension isn't installed, install it for the app.

Использование расширения сайта предварительной версии с шаблоном ARMUse the preview site extension with an ARM template

Если вы используете шаблон ARM для создания и развертывания приложений, можно использовать тип ресурса siteextensions, чтобы добавить расширение сайта в веб-приложение.If an ARM template is used to create and deploy apps, the siteextensions resource type can be used to add the site extension to a web app. Например:For example:

{
    "type": "siteextensions",
    "name": "AspNetCoreRuntime",
    "apiVersion": "2015-04-01",
    "location": "[resourceGroup().location]",
    "properties": {
        "version": "[parameters('aspnetcoreVersion')]"
    },
    "dependsOn": [
        "[resourceId('Microsoft.Web/Sites', parameters('siteName'))]"
    ]
}

Развертывание автономного приложения для предварительной версииDeploy a self-contained preview app

Объект автономного развертывания (SCD), который предназначен для предварительной версии среды выполнения, включает в развертывание среду выполнения предварительной версии.A self-contained deployment (SCD) that targets a preview runtime carries the preview runtime in the deployment.

При развертывании автономного приложения:When deploying a self-contained app:

Следуйте указаниям в разделе Развертывание автономного приложения.Follow the guidance in the Deploy the app self-contained section.

Использование Docker с веб-приложениями для контейнеровUse Docker with Web Apps for containers

Центр Docker содержит образы Docker из последней предварительной версии.The Docker Hub contains the latest preview Docker images. Их можно использовать в качестве базового образа.The images can be used as a base image. Использование образа и развертывание в веб-приложениях для контейнеров выполняется как обычно.Use the image and deploy to Web Apps for Containers normally.

Публикация и развертывание приложенияPublish and deploy the app

Развертывание приложения, зависимого от платформыDeploy the app framework-dependent

64-разрядное развертывание, зависимое от платформыFor a 64-bit framework-dependent deployment:

  • Для создания 64-разрядной версии приложения используйте 64-разрядную версию пакета SDK для .NET Core.Use a 64-bit .NET Core SDK to build a 64-bit app.
  • В разделе Конфигурация > Общие параметры службы приложений выберите для параметра Платформа значение 64-разрядная версия.Set the Platform to 64 Bit in the App Service's Configuration > General settings. Чтобы включить возможность выбора разрядности платформы, приложение должно использовать план обслуживания "Базовый" или более высокий.The app must use a Basic or higher service plan to enable the choice of platform bitness.
  1. Выберите Сборка > Опубликовать {имя_приложения} на панели инструментов Visual Studio или щелкните правой кнопкой мыши проект в обозревателе решений и выберите пункт Опубликовать.Select Build > Publish {Application Name} from the Visual Studio toolbar or right-click the project in Solution Explorer and select Publish.
  2. В диалоговом оке Выберите целевой объект публикации убедитесь, что выбран вариант Служба приложений.In the Pick a publish target dialog, confirm that App Service is selected.
  3. Выберите Дополнительно.Select Advanced. Откроется диалоговое окно Публикация.The Publish dialog opens.
  4. В диалоговом окне Публикация:In the Publish dialog:
    • Убедитесь, что выбрана конфигурация Выпуск.Confirm that the Release configuration is selected.
    • Откройте раскрывающийся список Режим развертывания и выберите вариант Зависит от платформы.Open the Deployment Mode drop-down list and select Framework-Dependent.
    • Для параметра Целевая среда выполнения выберите значение Переносимая.Select Portable as the Target Runtime.
    • Если потребуется удалить дополнительные файлы после развертывания, откройте Параметры публикации файлов и установите флажок для удаления дополнительных файлов в месте назначения.If you need to remove additional files upon deployment, open File Publish Options and select the check box to remove additional files at the destination.
    • Нажмите кнопку Сохранить.Select Save.
  5. Создайте новый сайт или обновите существующий, следуя остальным подсказкам мастера публикации.Create a new site or update an existing site by following the remaining prompts of the publish wizard.

Автономное развертывание приложенияDeploy the app self-contained

Используйте Visual Studio или средство интерфейса командной строки (CLI) для автономного развертывания (SCD).Use Visual Studio or the command-line interface (CLI) tools for a self-contained deployment (SCD).

  1. Выберите Сборка > Опубликовать {имя_приложения} на панели инструментов Visual Studio или щелкните правой кнопкой мыши проект в обозревателе решений и выберите пункт Опубликовать.Select Build > Publish {Application Name} from the Visual Studio toolbar or right-click the project in Solution Explorer and select Publish.
  2. В диалоговом оке Выберите целевой объект публикации убедитесь, что выбран вариант Служба приложений.In the Pick a publish target dialog, confirm that App Service is selected.
  3. Выберите Дополнительно.Select Advanced. Откроется диалоговое окно Публикация.The Publish dialog opens.
  4. В диалоговом окне Публикация:In the Publish dialog:
    • Убедитесь, что выбрана конфигурация Выпуск.Confirm that the Release configuration is selected.
    • Откройте раскрывающийся список Режим развертывания и выберите вариант Автономное.Open the Deployment Mode drop-down list and select Self-Contained.
    • Выберите целевую среду выполнения из раскрывающегося списка Целевая среда выполнения.Select the target runtime from the Target Runtime drop-down list. Значение по умолчанию — win-x86.The default is win-x86.
    • Если потребуется удалить дополнительные файлы после развертывания, откройте Параметры публикации файлов и установите флажок для удаления дополнительных файлов в месте назначения.If you need to remove additional files upon deployment, open File Publish Options and select the check box to remove additional files at the destination.
    • Нажмите кнопку Сохранить.Select Save.
  5. Создайте новый сайт или обновите существующий, следуя остальным подсказкам мастера публикации.Create a new site or update an existing site by following the remaining prompts of the publish wizard.

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

Привязки безопасных протоколов позволяют указать сертификат, который следует использовать при ответе на запросы по HTTPS.Secure protocol bindings allow you specify a certificate to use when responding to requests over HTTPS. Для привязки требуется допустимый закрытый сертификат (PFX), выданный для определенного имени узла.Binding requires a valid private certificate (.pfx) issued for the specific hostname. Дополнительные сведения см. в статье Руководство. Привязывание существующего настраиваемого SSL-сертификата к Службе приложений Azure.For more information, see Tutorial: Bind an existing custom SSL certificate to Azure App Service.

Преобразование web.configTransform web.config

Если вам нужно преобразовать web.config при публикации (например, задать переменные среды на основе конфигурации, профиля или среды), см. раздел Преобразование web.config.If you need to transform web.config on publish (for example, set environment variables based on the configuration, profile, or environment), see Преобразование web.config.

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

Служба приложений Azure на Windows Server использует службы IIS.Azure App Service on Windows Server uses Internet Information Services (IIS). Технологии IIS посвящены следующие статьи.The following topics pertain to the underlying IIS technology: