Implantar aplicativos ASP.NET Core no Serviço de Aplicativo do AzureDeploy ASP.NET Core apps to Azure App Service

Serviço de Aplicativo do Azure é um serviço de plataforma de computação em nuvem da Microsoft para hospedar aplicativos Web, incluindo o ASP.NET Core.Azure App Service is a Microsoft cloud computing platform service for hosting web apps, including ASP.NET Core.

Recursos úteisUseful resources

A Documentação de Serviço de Aplicativo do Azure é a página inicial para documentação de Aplicativos Azure, tutoriais, exemplos, guias de instruções e outros recursos.App Service Documentation is the home for Azure Apps documentation, tutorials, samples, how-to guides, and other resources. Dois tutoriais importantes que pertencem à hospedagem de aplicativos ASP.NET Core são:Two notable tutorials that pertain to hosting ASP.NET Core apps are:

Criar um aplicativo Web ASP.NET Core no AzureCreate an ASP.NET Core web app in Azure
Use o Visual Studio para criar e implantar um aplicativo Web ASP.NET Core no Serviço de Aplicativo do Azure no Windows.Use Visual Studio to create and deploy an ASP.NET Core web app to Azure App Service on Windows.

Criar um aplicativo ASP.NET Core no Serviço de Aplicativo no LinuxCreate an ASP.NET Core app in App Service on Linux
Use a linha de comando do Visual Studio para criar e implantar um aplicativo Web ASP.NET Core no Serviço de Aplicativo do Azure no Linux.Use the command line to create and deploy an ASP.NET Core web app to Azure App Service on Linux.

Consulte o ASP.NET Core no painel do serviço de aplicativo para obter a versão do ASP.NET Core disponível no serviço Azure app.See the ASP.NET Core on App Service Dashboard for the version of ASP.NET Core available on Azure App service.

Os artigos a seguir estão disponíveis na documentação do ASP.NET Core:The following articles are available in ASP.NET Core documentation:

Publicar um aplicativo ASP.NET Core no Azure com o Visual Studio
Aprenda como publicar um aplicativo ASP.NET Core no Serviço de Aplicativo do Azure usando o Visual Studio.Learn how to publish an ASP.NET Core app to Azure App Service using Visual Studio.

Implantação contínua no Azure com o Visual Studio e o GIT com o ASP.NET Core
Saiba como criar um aplicativo Web ASP.NET Core usando o Visual Studio e implantá-lo no Serviço de Aplicativo do Azure, usando o Git para implantação contínua.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.

Crie seu primeiro pipelineCreate your first pipeline
Configurar um build de CI para um aplicativo ASP.NET Core e, em seguida, criar uma versão de implantação contínua para o Serviço de Aplicativo do Azure.Set up a CI build for an ASP.NET Core app, then create a continuous deployment release to Azure App Service.

Área restrita de aplicativo Web do AzureAzure Web App sandbox
Descubra as limitações de tempo de execução do Serviço de Aplicativo do Azure impostas pela plataforma de Aplicativos do Azure.Discover Azure App Service runtime execution limitations enforced by the Azure Apps platform.

Solucionar problemas de projetos ASP.NET Core
Compreenda e solucione problemas de avisos e erros com projetos do ASP.NET Core.Understand and troubleshoot warnings and errors with ASP.NET Core projects.

Configuração do aplicativoApplication configuration

PlataformaPlatform

Os tempos de execução para aplicativos de 32 bits (x86) e 64 bits (x64) estão presentes no Serviço de Aplicativo do Azure.Runtimes for 64-bit (x64) and 32-bit (x86) apps are present on Azure App Service. O SDK do .NET Core disponível no Serviço de Aplicativo é de 32 bits, mas é possível implantar aplicativos de 64 bits compilados localmente usando o console do Kudu ou o processo de publicação do 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. Para obter mais informações, consulte a seção Publicar e implantar o aplicativo.For more information, see the Publish and deploy the app section.

Para aplicativos com dependências nativas, os tempos de execução para aplicativos de 32 bits (x86) estão presentes no Serviço de Aplicativo do Azure.For apps with native dependencies, runtimes for 32-bit (x86) apps are present on Azure App Service. O SDK do .NET Core disponível no Serviço de Aplicativo é de 32 bits.The .NET Core SDK available on App Service is 32-bit.

Para obter mais informações sobre os componentes e os métodos de distribuição da estrutura do .NET Core (por exemplo, informações sobre o tempo de execução e sobre o SDK do .NET Core), consulte Sobre o .NET Core: Composição.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.

PacotesPackages

Incluem os seguintes pacotes NuGet para fornecer recursos de registro automático em log para aplicativos implantados no Serviço de Aplicativo do Azure:Include the following NuGet packages to provide automatic logging features for apps deployed to Azure App Service:

Os pacotes anteriores não estão disponíveis no Microsoft.AspNetCore.App metapackage.The preceding packages aren't available from the Microsoft.AspNetCore.App metapackage. Os aplicativos que são direcionados ao .NET Framework ou fazem referência a um metapacote Microsoft.AspNetCore.App precisam referenciar explicitamente os pacotes individuais no arquivo de projeto do aplicativo.Apps that target .NET Framework or reference the Microsoft.AspNetCore.App metapackage must explicitly reference the individual packages in the app's project file.

Substituir a configuração do aplicativo no Portal do AzureOverride app configuration using the Azure Portal

As configurações do aplicativo no portal do Azure permitem definir variáveis de ambiente para o aplicativo.App settings in the Azure Portal permit you to set environment variables for the app. As variáveis de ambiente podem ser consumidas pelo Provedor de configuração de variáveis de ambiente.Environment variables can be consumed by the Environment Variables Configuration Provider.

Quando uma configuração de aplicativo é criada ou modificada no Portal do Azure e o botão Salvar é selecionado, o Aplicativo Azure é reiniciado.When an app setting is created or modified in the Azure Portal and the Save button is selected, the Azure App is restarted. A variável de ambiente estará disponível para o aplicativo após o serviço ser reiniciado.The environment variable is available to the app after the service restarts.

Quando o aplicativo usa o host genérico, as variáveis de ambiente não são carregadas na configuração do aplicativo por padrão, e o provedor de configuração deve ser adicionado pelo desenvolvedor.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. O desenvolvedor determina o prefixo da variável de ambiente quando o provedor de configuração é adicionado.The developer determines the environment variable prefix when the configuration provider is added. Para saber mais, confira Host Genérico .NET e o Provedor de configuração de variáveis de ambiente.For more information, see Host Genérico .NET and the Environment Variables Configuration Provider.

Quando um aplicativo cria o host usando o WebHost.CreateDefaultBuilder, as variáveis de ambiente que configuram o host usam o prefixo ASPNETCORE_.When an app builds the host using WebHost.CreateDefaultBuilder, environment variables that configure the host use the ASPNETCORE_ prefix. Para saber mais, confira Host da Web do ASP.NET Core e o Provedor de configuração de variáveis de ambiente.For more information, see Host da Web do ASP.NET Core and the Environment Variables Configuration Provider.

Servidor proxy e cenários de balanceador de cargaProxy server and load balancer scenarios

O Middleware de integração do IIS, que configura o Middleware de cabeçalhos encaminhados ao hospedar fora do processo, e o módulo do ASP.NET Core são configurados para encaminhar o esquema (HTTP/HTTPS) e o endereço IP remoto de onde a solicitação foi originada.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. Configuração adicional pode ser necessária para aplicativos hospedados atrás de servidores proxy adicionais e balanceadores de carga.Additional configuration might be required for apps hosted behind additional proxy servers and load balancers. Para obter mais informações, veja Configurar o ASP.NET Core para trabalhar com servidores proxy e balanceadores de carga.For more information, see Configure ASP.NET Core to work with proxy servers and load balancers.

Monitoramento e registro em logMonitoring and logging

Os aplicativos ASP.NET Core implantados no Serviço de Aplicativo recebem automaticamente uma extensão do Serviço de Aplicativo, Integração de Log do ASP.NET Core.ASP.NET Core apps deployed to App Service automatically receive an App Service extension, ASP.NET Core Logging Integration. A extensão habilita a integração de log para aplicativos ASP.NET Core no Serviço de Aplicativo do Azure.The extension enables logging integration for ASP.NET Core apps on Azure App Service.

Os aplicativos ASP.NET Core implantados no Serviço de Aplicativo recebem automaticamente uma extensão do Serviço de Aplicativo, Extensões de Log do ASP.NET Core.ASP.NET Core apps deployed to App Service automatically receive an App Service extension, ASP.NET Core Logging Extensions. A extensão habilita a integração de log para aplicativos ASP.NET Core no Serviço de Aplicativo do Azure.The extension enables logging integration for ASP.NET Core apps on Azure App Service.

Para monitoramento, registro em log e informações de solução de problemas, veja os seguintes artigos:For monitoring, logging, and troubleshooting information, see the following articles:

Monitore aplicativos no Serviço de Aplicativo do AzureMonitor apps in Azure App Service
Saiba como examinar as cotas e métricas para aplicativos e planos do Serviço de Aplicativo.Learn how to review quotas and metrics for apps and App Service plans.

Habilite log de diagnósticos para aplicativos no Serviço de Aplicativo do AzureEnable diagnostics logging for apps in Azure App Service
Descubra como habilitar e acessar o log de diagnósticos para os códigos de status HTTP, solicitações com falha e atividade do servidor Web.Discover how to enable and access diagnostic logging for HTTP status codes, failed requests, and web server activity.

Tratar erros no ASP.NET Core
Entenda as abordagens comuns para o tratamento de erros em aplicativos ASP.NET Core.Understand common approaches to handling errors in ASP.NET Core apps.

Solucionar problemas ASP.NET Core no serviço Azure App e no IIS
Saiba como diagnosticar problemas com implantações do Serviço de Aplicativo do Azure com aplicativos ASP.NET Core.Learn how to diagnose issues with Azure App Service deployments with ASP.NET Core apps.

Referência de erros comuns para o Serviço de Aplicativo do Azure e o IIS com o ASP.NET Core
Consulte os erros comuns de configuração de implantação para aplicativos hospedados pelo Serviço de Aplicativo do Azure/IIS com orientação para solução de problemas.See the common deployment configuration errors for apps hosted by Azure App Service/IIS with troubleshooting advice.

Anel de chave de proteção de dados e slots de implantaçãoData Protection key ring and deployment slots

Chaves de proteção de dados são mantidas na pasta %HOME%\ASP.NET\DataProtection-Keys.Data Protection keys are persisted to the %HOME%\ASP.NET\DataProtection-Keys folder. Essa pasta é apoiada pelo repositório de rede e é sincronizada em todos os computadores que hospedam o aplicativo.This folder is backed by network storage and is synchronized across all machines hosting the app. As chaves não são protegidas em repouso.Keys aren't protected at rest. Essa pasta fornece o anel de chave para todas as instâncias de um aplicativo em um único slot de implantação.This folder supplies the key ring to all instances of an app in a single deployment slot. Slots de implantação separados, como de preparo e produção, não compartilham um anel de chave.Separate deployment slots, such as Staging and Production, don't share a key ring.

Quando ocorre a troca entre os slots de implantação, nenhum sistema que usa a proteção de dados consegue descriptografar dados armazenados usando o anel de chave dentro do slot anterior.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. O middleware de cookie do ASP.NET usa a proteção de dados para proteger seus cookies.ASP.NET Cookie Middleware uses data protection to protect its cookies. Com isso, os usuários são desconectados de um aplicativo que usa o Middleware de Cookie padrão do ASP.NET.This leads to users being signed out of an app that uses the standard ASP.NET Cookie Middleware. Para uma solução de anel de chave independente de slot, use um provedor de anel de chave externo, como:For a slot-independent key ring solution, use an external key ring provider, such as:

  • Armazenamento do Blobs do AzureAzure Blob Storage
  • Azure Key VaultAzure Key Vault
  • Repositório SQLSQL store
  • Cache redisRedis cache

Para obter mais informações, consulte Provedores de armazenamento de chaves no ASP.NET Core.For more information, see Provedores de armazenamento de chaves no ASP.NET Core.

Implantar o ASP.NET Core 3,0 no serviço Azure AppDeploy ASP.NET Core 3.0 to Azure App Service

Esperamos ter ASP.NET Core 3,0 disponível no serviço Azure App em breve.We hope to have ASP.NET Core 3.0 available on Azure App Service soon.

Use uma das seguintes abordagens se o aplicativo depender do .NET Core 3,0:Use one of the following approaches if the app relies on .NET Core 3.0:

Instalar a extensão de site de visualizaçãoInstall the preview site extension

Se houver problemas ao usar a extensão de site de visualização, abra um aspnet/AspNetCore.If a problem occurs using the preview site extension, open an aspnet/AspNetCore issue.

  1. No portal do Azure, navegue até o Serviço de Aplicativo.From the Azure Portal, navigate to the App Service.
  2. Selecione o aplicativo Web.Select the web app.
  3. Insira "ex" na caixa de pesquisa para filtrar por "Extensões" ou role para baixo na lista de ferramentas de gerenciamento.Type "ex" in the search box to filter for "Extensions" or scroll down the list of management tools.
  4. Selecione Extensões.Select Extensions.
  5. Selecione Adicionar.Select Add.
  6. Selecione a extensão Tempo de execução do ASP.NET Core {X.Y} ({x64|x86}) na lista, em que {X.Y} é a versão prévia do ASP.NET Core e {x64|x86} especifica a plataforma.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. Selecione OK para aceitar os termos legais.Select OK to accept the legal terms.
  8. Selecione OK para instalar a extensão.Select OK to install the extension.

Quando a operação for concluída, a versão prévia mais recente do .NET Core será instalada.When the operation completes, the latest .NET Core preview is installed. Verifique a instalação:Verify the installation:

  1. Selecione Ferramentas Avançadas.Select Advanced Tools.

  2. Selecione Acessar em Ferramentas Avançadas.Select Go in Advanced Tools.

  3. Selecione o item de menu Console de depuração > PowerShell.Select the Debug console > PowerShell menu item.

  4. No prompt do PowerShell, execute o seguinte comando.At the PowerShell prompt, execute the following command. Substitua a versão do tempo de execução do ASP.NET Core por {X.Y} e a plataforma por {PLATFORM} no comando: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}\
    

    O comando retornará True quando o tempo de execução da versão prévia x64 estiver instalado.The command returns True when the x64 preview runtime is installed.

Observação

A arquitetura da plataforma (x86/x64) de um aplicativo dos Serviços de Aplicativos é definida nas configurações do aplicativo no portal do Azure para aplicativos hospedados em um nível de hospedagem de computação da série A ou melhor.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. Se o aplicativo for executado no modo em processo e a arquitetura da plataforma estiver configurada para 64 bits (x64), o Módulo do ASP.NET Core usará o tempo de execução da versão prévia de 64 bits, se estiver presente.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. Instale a extensão Tempo de execução do ASP.NET Core {X.Y} (x64) .Install the ASP.NET Core {X.Y} (x64) Runtime extension.

Depois de instalar o tempo de execução da versão prévia x64, execute o seguinte comando na janela de comando do Kudu PowerShell para verificar a instalação.After installing the x64 preview runtime, run the following command in the Kudu PowerShell command window to verify the installation. Substitua a versão de tempo de execução do ASP.NET Core por {X.Y} no comando:Substitute the ASP.NET Core runtime version for {X.Y} in the command:

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

O comando retornará True quando o tempo de execução da versão prévia x64 estiver instalado.The command returns True when the x64 preview runtime is installed.

Observação

As Extensões do ASP.NET Core habilitam uma funcionalidade adicional para o ASP.NET Core nos Serviços de Aplicativo do Azure, como a habilitação do registro em log do Azure.ASP.NET Core Extensions enables additional functionality for ASP.NET Core on Azure App Services, such as enabling Azure logging. A extensão é instalada automaticamente durante a implantação do Visual Studio.The extension is installed automatically when deploying from Visual Studio. Se a extensão não estiver instalada, instale-a para o aplicativo.If the extension isn't installed, install it for the app.

Usar a extensão de site de visualização com um modelo do ARMUse the preview site extension with an ARM template

Se um modelo do ARM for usado para criar e implantar aplicativos, o tipo de recurso siteextensions poderá ser usado para adicionar a extensão de site a um aplicativo Web.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. Por exemplo:For example:

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

Implantar um aplicativo autossuficiente em versão préviaDeploy a self-contained preview app

Uma SCD (implantação autocontida) voltada para um tempo de execução de versão prévia transporta o tempo de execução da versão prévia na implantação.A self-contained deployment (SCD) that targets a preview runtime carries the preview runtime in the deployment.

Ao implantar um aplicativo autocontido:When deploying a self-contained app:

Siga as orientações fornecidas na seção Implantar o aplicativo autossuficiente.Follow the guidance in the Deploy the app self-contained section.

Usar o Docker com aplicativos Web para contêineresUse Docker with Web Apps for containers

O Docker Hub contém as imagens de versão prévia do Docker mais recentes.The Docker Hub contains the latest preview Docker images. As imagens podem ser usadas como uma imagem de base.The images can be used as a base image. Use a imagem e implante aplicativos Web para contêineres normalmente.Use the image and deploy to Web Apps for Containers normally.

Publicar e implantar o aplicativoPublish and deploy the app

Implantar o aplicativo dependente de estrutura de aplicativosDeploy the app framework-dependent

Para uma implantação dependente de estrutura de 64 bits:For a 64-bit framework-dependent deployment:

  • Use um SDK do .NET Core de 64 bits para compilar um aplicativo de 64 bits.Use a 64-bit .NET Core SDK to build a 64-bit app.
  • Configure a Plataforma como 64 bits na seção Configuração > Configurações gerais do Serviço de Aplicativo.Set the Platform to 64 Bit in the App Service's Configuration > General settings. O aplicativo deve usar um plano de serviço Básico ou superior para possibilitar a escolha do número de bits da plataforma.The app must use a Basic or higher service plan to enable the choice of platform bitness.
  1. Selecione Compilar > Publicar {Application Name} na barra de ferramentas do Visual Studio ou clique com o botão direito do mouse no projeto no Gerenciador de Soluções e selecione Publicar.Select Build > Publish {Application Name} from the Visual Studio toolbar or right-click the project in Solution Explorer and select Publish.
  2. Na caixa de diálogo Escolher um destino de publicação, confirme se o Serviço de Aplicativo está selecionado.In the Pick a publish target dialog, confirm that App Service is selected.
  3. Selecione Avançado.Select Advanced. A caixa de diálogo Publicar será aberta.The Publish dialog opens.
  4. Na caixa de diálogo Publicar:In the Publish dialog:
    • Confirme se a configuração Versão está selecionada.Confirm that the Release configuration is selected.
    • Abra a lista suspensa Modo de Implantação e selecione Dependente de Estrutura.Open the Deployment Mode drop-down list and select Framework-Dependent.
    • Selecione Portátil como o Tempo de Execução de Destino.Select Portable as the Target Runtime.
    • Se você precisar remover arquivos adicionais após a implantação, abra as Opções de Publicação do Arquivo e marque a caixa de seleção para remover arquivos adicionais no destino.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.
    • Clique em Salvar.Select Save.
  5. Crie um novo site ou atualize um site existente seguindo as solicitações restantes do assistente de publicação.Create a new site or update an existing site by following the remaining prompts of the publish wizard.

Implantar o aplicativo autocontidoDeploy the app self-contained

Use o Visual Studio ou as ferramentas da CLI (interface de linha de comando) para uma SCD (implantação autossuficiente).Use Visual Studio or the command-line interface (CLI) tools for a self-contained deployment (SCD).

  1. Selecione Compilar > Publicar {Application Name} na barra de ferramentas do Visual Studio ou clique com o botão direito do mouse no projeto no Gerenciador de Soluções e selecione Publicar.Select Build > Publish {Application Name} from the Visual Studio toolbar or right-click the project in Solution Explorer and select Publish.
  2. Na caixa de diálogo Escolher um destino de publicação, confirme se o Serviço de Aplicativo está selecionado.In the Pick a publish target dialog, confirm that App Service is selected.
  3. Selecione Avançado.Select Advanced. A caixa de diálogo Publicar será aberta.The Publish dialog opens.
  4. Na caixa de diálogo Publicar:In the Publish dialog:
    • Confirme se a configuração Versão está selecionada.Confirm that the Release configuration is selected.
    • Abra a lista suspensa Modo de Implantação e selecione Autocontido.Open the Deployment Mode drop-down list and select Self-Contained.
    • Selecione o tempo de execução de destino na lista suspensa Tempo de Execução de Destino.Select the target runtime from the Target Runtime drop-down list. O padrão é win-x86.The default is win-x86.
    • Se você precisar remover arquivos adicionais após a implantação, abra as Opções de Publicação do Arquivo e marque a caixa de seleção para remover arquivos adicionais no destino.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.
    • Clique em Salvar.Select Save.
  5. Crie um novo site ou atualize um site existente seguindo as solicitações restantes do assistente de publicação.Create a new site or update an existing site by following the remaining prompts of the publish wizard.

Configurações de protocolo (HTTPS)Protocol settings (HTTPS)

As associações de protocolo de segurança permitem que você especifique um certificado a ser usado ao responder a solicitações em HTTPS.Secure protocol bindings allow you specify a certificate to use when responding to requests over HTTPS. A associação requer um certificado privado válido ( .pfx) emitido para o nome do host específico.Binding requires a valid private certificate (.pfx) issued for the specific hostname. Para obter mais informações, confira Tutorial: Associar um certificado SSL personalizado existente ao Serviço de Aplicativo do Azure.For more information, see Tutorial: Bind an existing custom SSL certificate to Azure App Service.

Transformação do web.configTransform web.config

Se você precisar transformar o Web.config em publicação (por exemplo, definir variáveis ​​de ambiente com base na configuração, no perfil ou no ambiente), consulte Transformação do web.config.If you need to transform web.config on publish (for example, set environment variables based on the configuration, profile, or environment), see Transformação do web.config.

Recursos adicionaisAdditional resources

O Serviço de Aplicativo do Azure no Windows Server usa o IIS (Serviços de Informações da Internet).Azure App Service on Windows Server uses Internet Information Services (IIS). Os tópicos a seguir estão relacionados com a tecnologia subjacente do IIS:The following topics pertain to the underlying IIS technology: