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.

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.

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 do Azure é de 32 bits, mas você pode implantar aplicativos de 64 bits usando o console do Kudu ou o MSDeploy com um perfil de publicação do Visual Studio ou um comando da CLI.The .NET Core SDK available on App Service is 32-bit, but you can deploy 64-bit apps using the Kudu console or via MSDeploy with a Visual Studio publish profile or CLI command.

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.

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 da Web e cria o host usando WebHost.CreateDefaultBuilder, as variáveis de ambiente que configuram o host usam o prefixo ASPNETCORE_.When an app uses the Web Host and 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.

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.

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

O Middleware de integração do IIS, que configura Middleware de cabeçalhos encaminhados, 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, 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 no ASP.NET Core no Serviço de Aplicativo do Azure
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 a versão de visualização do ASP.NET Core para o Serviço de Aplicativo do AzureDeploy ASP.NET Core preview release to Azure App Service

Use uma das abordagens a seguir:Use one of the following approaches:

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 o aplicativo autocontidoDeploy the app self-contained

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:

Publicar no Visual StudioPublish from Visual Studio

  1. Selecione Build > Publicar {Nome do Aplicativo} na barra de ferramentas do Visual Studio.Select Build > Publish {Application Name} from the Visual Studio toolbar.
  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.
    • Selecione 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.

Publicar usando as ferramentas de CLI (interface de linha de comando)Publish using command-line interface (CLI) tools

  1. No arquivo de projeto, especifique um ou mais RIDs (identificadores de tempo de execução).In the project file, specify one or more Runtime Identifiers (RIDs). Use <RuntimeIdentifier> (singular) para um único RID ou use <RuntimeIdentifiers> (plural) para fornecer uma lista de RIDs delimitada por ponto e vírgula.Use <RuntimeIdentifier> (singular) for a single RID, or use <RuntimeIdentifiers> (plural) to provide a semicolon-delimited list of RIDs. No exemplo a seguir, o RID win-x86 é especificado:In the following example, the win-x86 RID is specified:

    <PropertyGroup>
      <TargetFramework>netcoreapp2.1</TargetFramework>
      <RuntimeIdentifier>win-x86</RuntimeIdentifier>
    </PropertyGroup>
    
  2. Em um shell de comando, publique o aplicativo na configuração de Versão do tempo de execução do host com o comando dotnet publish.From a command shell, publish the app in Release configuration for the host's runtime with the dotnet publish command. No exemplo a seguir, o aplicativo é publicado para o RID win-x86.In the following example, the app is published for the win-x86 RID. O RID fornecido para a opção --runtime precisa ser fornecida na propriedade <RuntimeIdentifier> (ou <RuntimeIdentifiers>) no arquivo de projeto.The RID supplied to the --runtime option must be provided in the <RuntimeIdentifier> (or <RuntimeIdentifiers>) property in the project file.

    dotnet publish --configuration Release --runtime win-x86
    
  3. Mova o conteúdo do diretório bin/Release/{TARGET FRAMEWORK}/{RUNTIME IDENTIFIER}/publish para o site no Serviço de Aplicativo.Move the contents of the bin/Release/{TARGET FRAMEWORK}/{RUNTIME IDENTIFIER}/publish directory to the site in App Service.

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.

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: