Implantar aplicativos ASP.NET Core no Serviço de Aplicativo do Azure

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.

Padrões de aplicativos Web confiáveis

Consulte os Vídeo do YouTube e o artigoPadrão de Aplicativo Web Confiável para .NET para obter diretrizes sobre como criar um aplicativo de ASP.NET Core moderno, confiável, com desempenho, testável, econômico e escalonável, seja do zero ou refatorando um aplicativo existente.

Recursos úteis

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. Dois tutoriais importantes que pertencem à hospedagem de aplicativos ASP.NET Core são:

Criar um aplicativo Web ASP.NET Core no Azure
Use o Visual Studio para criar e implantar um aplicativo Web ASP.NET Core no Serviço de Aplicativo do Azure no Windows.

Criar um aplicativo ASP.NET Core no Serviço de Aplicativo no 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.

Consulte o Painel do Serviço de Aplicativo do ASP.NET Core para obter a versão do ASP.NET Core disponível no serviço de Aplicativo do Azure.

Assine o repositório Comunicados do Serviço de Aplicativo e monitore os problemas. A equipe do Serviço de Aplicativo publica regularmente anúncios e cenários que chegam ao Serviço de Aplicativo.

Os artigos a seguir estão disponíveis na documentação do ASP.NET Core:

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.

Criar seu primeiro 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.

Área restrita de aplicativo Web do Azure
Descubra as limitações de runtime do Serviço de Aplicativo do Azure impostas pela plataforma de Aplicativos do Azure.

Solucionar problemas e depurar projetos do ASP.NET Core
Compreenda e solucione problemas de avisos e erros com projetos do ASP.NET Core.

Configuração de aplicativo

Plataforma

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 (Básico) ou superior. Confirme se as configurações de publicação do aplicativo (por exemplo, no perfil de publicação (.pubxml) do Visual Studio) correspondem à configuração do serviço de aplicativo no Portal do Azure.

Os runtimes para aplicativos de 32 bits (x86) e 64 bits (x64) estão presentes no Serviço de Aplicativo do Azure. 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. Para obter mais informações, consulte a seção Publicar e implantar o aplicativo.

Para aplicativos com dependências nativas, os runtimes para aplicativos de 32 bits (x86) estão presentes no Serviço de Aplicativo do Azure. O SDK do .NET Core disponível no Serviço de Aplicativo é de 32 bits.

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 runtime e sobre o SDK do .NET Core), consulte Sobre o .NET Core: Composição.

Pacotes

Incluem os seguintes pacotes NuGet para fornecer recursos de registro automático em log para aplicativos implantados no Serviço de Aplicativo do Azure:

Os pacotes anteriores devem ser referenciados explicitamente no arquivo de projeto do aplicativo.

Substituir a configuração do aplicativo no Portal do Azure

As configurações do aplicativo no portal do Azure permitem definir variáveis de ambiente para o aplicativo. As variáveis de ambiente podem ser consumidas pelo Provedor de configuração de variáveis de ambiente.

Quando uma configuração de aplicativo é criada ou modificada no Portal do Azure e o botão Salvar é selecionado, o Aplicativo Azure é reiniciado. A variável de ambiente estará disponível para o aplicativo após o serviço ser reiniciado.

Quando um aplicativo usa o Host Genérico, as variáveis de ambiente são carregadas na configuração do aplicativo quando CreateDefaultBuilder é chamado para criar o host. Para obter mais informações, consulte Host Genérico do .NET no ASP.NET Core e Provedor de Configuração de Variáveis de Ambiente.

As configurações do aplicativo no portal do Azure permitem definir variáveis de ambiente para o aplicativo. As variáveis de ambiente podem ser consumidas pelo Provedor de configuração de variáveis de ambiente.

Quando uma configuração de aplicativo é criada ou modificada no Portal do Azure e o botão Salvar é selecionado, o Aplicativo Azure é reiniciado. A variável de ambiente estará disponível para o aplicativo após o serviço ser reiniciado.

Quando um aplicativo usa o Host da Web, as variáveis de ambiente são carregadas na configuração do aplicativo quando CreateDefaultBuilder é chamado para criar o host. Para saber mais, confira Host da Web do ASP.NET Core e Provedor de Configuração de Variáveis de Ambiente.

Servidor proxy e cenários de balanceador de carga

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. Configuração adicional pode ser necessária para aplicativos hospedados atrás de servidores proxy adicionais e balanceadores de carga. Para obter mais informações, veja Configurar o ASP.NET Core para trabalhar com servidores proxy e balanceadores de carga.

Monitoramento e registro em log

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. A extensão habilita a integração de log para aplicativos ASP.NET Core no Serviço de Aplicativo do Azure.

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. A extensão habilita a integração de log para aplicativos ASP.NET Core no Serviço de Aplicativo do Azure.

Para monitoramento, registro em log e informações de solução de problemas, veja os seguintes artigos:

Monitorar aplicativos no Serviço de Aplicativo do Azure
Saiba como examinar as cotas e métricas para aplicativos e planos do Serviço de Aplicativo.

Habilitar log de diagnósticos para aplicativos no Serviço de Aplicativo do Azure
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.

Tratar erros no ASP.NET Core
Entenda as abordagens comuns para o tratamento de erros em aplicativos ASP.NET Core.

Solucionar problemas do ASP.NET Core no Serviço de Aplicativo do Azure e no IIS
Saiba como diagnosticar problemas com implantações do Serviço de Aplicativo do Azure com aplicativos ASP.NET Core.

Solucionar problemas com erros comuns no Serviço de Aplicativo do Azure e no 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.

Anel de chave de proteção de dados e slots de implantação

Chaves de proteção de dados são mantidas na pasta %HOME%\ASP.NET\DataProtection-Keys. Essa pasta é apoiada pelo repositório de rede e é sincronizada em todos os computadores que hospedam o aplicativo. As chaves não são protegidas em repouso. Essa pasta fornece o anel de chave para todas as instâncias de um aplicativo em um único slot de implantação. Slots de implantação separados, como de preparo e produção, não compartilham um anel de chave.

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. O middleware Cookie do ASP.NET usa proteção de dados para proteger seus cookies. Com isso, os usuários são desconectados de um aplicativo que usa o Middleware Cookie padrão do ASP.NET. Para uma solução de anel de chave independente de slot, use um provedor de anel de chave externo, como:

  • Armazenamento de Blobs do Azure
  • Cofre de Chave do Azure
  • Repositório SQL
  • Cache Redis

Para obter mais informações, veja Principais provedores de armazenamento no ASP.NET Core.

Implantar um aplicativo ASP.NET Core que usa uma versão prévia do .NET Core

Para implantar um aplicativo que usa uma versão prévia do .NET Core, consulte os recursos a seguir. Essas abordagens também são usadas quando o runtime está disponível, mas o SDK não foi instalado no Serviço de Aplicativo do Azure.

Consulte o Painel do Serviço de Aplicativo do ASP.NET Core para obter a versão do ASP.NET Core disponível no serviço de Aplicativo do Azure.

Consulte Selecionar a versão do .NET Core a ser usada para obter informações sobre como selecionar a versão do SDK do .NET para implantações autossuficientes.

Especificar a versão do SDK do .NET Core usando o Azure Pipelines

Use Cenários de CI/CD do Serviço de Aplicativo do Azure para configurar um build de integração contínua com o Azure DevOps. Depois que o build do Azure DevOps for criado, você pode configurar o build para usar uma versão específica do SDK.

Especificar a versão do SDK do .NET Core

Ao usar o centro de implantação do Serviço de Aplicativo para criar um build do Azure DevOps, o pipeline de build padrão inclui etapas para Restore, Build, Test e Publish. Para especificar a versão do SDK, selecione o botão Adicionar (+) na lista de trabalhos do Agente para adicionar uma nova etapa. Pesquise pelo SDK do .NET Core na barra de pesquisa.

Add the .NET Core SDK step

Mova a etapa para a primeira posição no build para que as etapas posteriores usem a versão especificada do SDK do .NET Core. Especifique a versão do SDK do .NET Core. Neste exemplo, o SDK é definido como 3.0.100.

Completed SDK step

Para publicar uma SCD (implantação autossuficiente), configure o SCD na etapa Publish e forneça o RID (identificador do runtime).

Self-contained publish

Implantar um aplicativo autossuficiente em versão prévia

Uma SCD (implantação autocontida) voltada para um runtime de versão prévia transporta o runtime da versão prévia na implantação.

Ao implantar um aplicativo autocontido:

Siga as orientações fornecidas na seção Implantar o aplicativo autossuficiente.

Usar o Docker com aplicativos Web para contêineres

O Hub do Docker em https://hub.docker.com/_/microsoft-dotnet contém as imagens do Docker de versão prévia mais recentes. As imagens podem ser usadas como uma imagem de base. Use a imagem e implante aplicativos Web para contêineres normalmente.

Instalar a extensão de site da versão prévia

Se houver problemas ao usar a extensão de site em versão prévia, abra um problema do dotnet/AspNetCore.

  1. No portal do Azure, navegue até o Serviço de Aplicativo.
  2. Selecione o aplicativo Web.
  3. Insira "ex" na caixa de pesquisa para filtrar por "Extensões" ou role para baixo na lista de ferramentas de gerenciamento.
  4. Selecione Extensões.
  5. Selecione Adicionar.
  6. Selecione a extensão Runtime 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.
  7. Selecione OK para aceitar os termos legais.
  8. Selecione OK para instalar a extensão.

Quando a operação for concluída, a versão prévia mais recente do .NET Core será instalada. Verifique a instalação:

  1. Selecione Ferramentas Avançadas.

  2. Selecione Acessar em Ferramentas Avançadas.

  3. Selecione o item de menu Console de depuração>PowerShell.

  4. No prompt do PowerShell, execute o seguinte comando. Substitua a versão do runtime do ASP.NET Core por {X.Y} e a plataforma por {PLATFORM} no comando:

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

    O comando retornará True quando o runtime da versão prévia x64 estiver instalado.

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 (Básico) ou superior. Confirme se as configurações de publicação do aplicativo (por exemplo, no perfil de publicação (.pubxml) do Visual Studio) correspondem à configuração do serviço de aplicativo no portal do Azure.

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 runtime da versão prévia de 64 bits, se estiver presente. Instale a extensão Runtime do ASP.NET Core {X.Y} (x64) usando o portal do Azure.

Depois de instalar o runtime da versão prévia x64, execute o seguinte comando na janela de comando do Kudu PowerShell do Azure para verificar a instalação. Substitua a versão de runtime do ASP.NET Core por {X.Y} no seguinte comando:

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

O comando retornará True quando o runtime da versão prévia x64 estiver instalado.

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. A extensão é instalada automaticamente durante a implantação do Visual Studio. Se a extensão não estiver instalada, instale-a para o aplicativo.

Usar a extensão de site de visualização com um modelo do ARM

Se um modelo do ARM for usado para criar e implantar aplicativos, o tipo de recurso Microsoft.Web/sites/siteextensions poderá ser usado para adicionar a extensão de site a um aplicativo Web. No seguinte exemplo, a extensão de site do Runtime do ASP.NET Core 5.0 (x64) (AspNetCoreRuntime.5.0.x64) é adicionada ao aplicativo:

{
    ...
    "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'))]"
            ]
        }
    ]
}
    

Para o espaço reservado{SITE NAME}, use o nome do aplicativo no Serviço de Aplicativo do Azure (por exemplo, contoso).

Publicar e implantar o aplicativo

Para uma implantação de 64 bits:

  • Use um SDK do .NET Core de 64 bits para compilar um aplicativo de 64 bits.
  • Configure a Plataforma como 64 bits na seção Configuração>Configurações gerais do Serviço de Aplicativo. O aplicativo deve usar um plano de serviço Básico ou superior para possibilitar a escolha do número de bits da plataforma.

Implantar o aplicativo dependente de estrutura de aplicativos

  1. No Visual Studio, clique com o botão direito do mouse no nome do projeto no Gerenciador de Soluções e selecione Publicar. Como alternativa, selecione Build>Publicar {Nome do Aplicativo} na barra de ferramentas do Visual Studio.
  2. Na caixa de diálogo Publicar, selecione Azure>Avançar.
  3. Selecione o serviço do Azure.
  4. Selecione Avançado. A caixa de diálogo Publicar será aberta.
  5. Selecione um grupo de recursos e um plano de hospedagem ou crie-os.
  6. Selecione Concluir.
  7. Na página Publicar:
    • Para Configuração, selecione o ícone de caneta Editar Configuração:
      • Confirme se a configuração Versão está selecionada.
      • Na lista suspensa Modo de Implantação, selecione Dependente da Estrutura.
      • Selecione o runtime desejado na lista suspensa Runtime de Destino. O padrão é win-x86.
    • Para 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.
    • Selecione Salvar.
    • Selecione Publicar.

Implantar o aplicativo autocontido

Use o Visual Studio ou a CLI do .NET Core para uma SCD (implantação autossuficiente).

  1. No Visual Studio, clique com o botão direito do mouse no nome do projeto no Gerenciador de Soluções e selecione Publicar. Como alternativa, selecione Build>Publicar {Nome do Aplicativo} na barra de ferramentas do Visual Studio.
  2. Na caixa de diálogo Publicar, selecione Azure>Avançar.
  3. Selecione o serviço do Azure.
  4. Selecione Avançado. A caixa de diálogo Publicar será aberta.
  5. Selecione um grupo de recursos e um plano de hospedagem ou crie-os.
  6. Selecione Concluir.
  7. Na página Publicar:
    • Para Configuração, selecione o ícone de caneta Editar Configuração:
      • Confirme se a configuração Versão está selecionada.
      • Na lista suspensa Modo de Implantação, selecione Autossuficiente.
      • Selecione o runtime desejado na lista suspensa Runtime de Destino. O padrão é win-x86.
    • Para 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.
    • Selecione Salvar.
    • Selecione Publicar.

Configurações de protocolo (HTTPS)

As associações de protocolo de segurança permitem especificar um certificado a ser usado ao responder a solicitações em HTTPS. A associação requer um certificado privado válido (.pfx) emitido para o nome do host específico. Para mais informações, veja Tutorial: associar um certificado SSL personalizado existente ao Serviço de Aplicativo do Azure.

Transformação do 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 Transformar web.config.

Recursos adicionais

O Serviço de Aplicativo do Azure no Windows Server usa o IIS (Serviços de Informações da Internet). Kestrel e YARP no front-end fornecem o balanceador de carga. Os tópicos a seguir estão relacionados com a tecnologia subjacente do IIS: