Compartilhar via


Configurar um aplicativo ASP.NET para o Serviço de Aplicativo do Azure

Observação

Para ASP.NET Core, consulte Configurar um aplicativo ASP.NET Core para o Serviço de Aplicativo do Azure. Se o aplicativo ASP.NET for executado em um contêiner personalizado do Windows ou do Linux, consulte Configurar um contêiner personalizado para o Serviço de Aplicativo do Azure.

Os aplicativos ASP.NET devem ser implantados no Serviço de Aplicativo do Azure como binários compilados. A ferramenta de publicação do Visual Studio cria a solução e implanta os binários compilados diretamente. O mecanismo de implantação do Serviço de Aplicativo implanta primeiro o repositório de código e, em seguida, compila os binários.

Este guia fornece os principais conceitos e instruções para desenvolvedores de ASP.NET. Se este artigo for sua primeira experiência com o Serviço de Aplicativo do Azure, siga Implantar um aplicativo Web ASP.NET e implantar um aplicativo ASP.NET com o Banco de Dados SQL do Azure no Azure primeiro.

Mostrar versões de tempo de execução .NET Framework com suporte

No Serviço de Aplicativo, as instâncias do Windows já têm todas as versões do .NET Framework com suporte instaladas. Para mostrar o runtime do .NET Framework e as versões do SDK disponíveis para você, acesse seu aplicativo no portal do Azure. Selecione Ferramentas de Desenvolvimento>Ferramentas Avançadas. Selecione Ir. No Kudu, selecione o console de depuração para CMD ou PowerShell. Execute o comando apropriado no console baseado em navegador:

Para versões de runtime do CLR 4 (.NET Framework 4 e acima):

ls "D:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework"

A versão mais recente do .NET Framework pode não estar disponível imediatamente.

Para versões de runtime do CLR 2 (.NET Framework 3.5 e inferior):

ls "D:\Program Files (x86)\Reference Assemblies\Microsoft\Framework"

Se o runtime necessário pelo aplicativo não for compatível, você poderá implantá-lo com um contêiner personalizado.

Mostrar a versão atual do tempo de execução do .NET Framework

Execute o seguinte comando no Cloud Shell:

az webapp config show --resource-group <resource-group-name> --name <app-name> --query netFrameworkVersion

Um valor de v4.0 significa que a versão mais recente do CLR 4 (.NET Framework 4.x) é usado. Um valor de v2.0 significa que uma versão do CLR 2 (.NET Framework 3.5) é usado.

Definir a versão de tempo de execução do .NET Framework

Por padrão, o Serviço de Aplicativo usa a versão de .NET Framework mais recente com suporte para executar o aplicativo ASP.NET. Para executar seu aplicativo usando o .NET Framework 3.5, execute o seguinte comando no Cloud Shell (v2.0 significa CLR 2):

az webapp config set --resource-group <resource-group-name> --name <app-name> --net-framework-version v2.0

O que acontece com ambientes de execução obsoletos no Azure App Service?

Runtimes desatualizados são preteridos pela organização de manutenção ou têm vulnerabilidades significativas. Assim, eles são removidos da criação e configuração de páginas no portal. Quando um runtime desatualizado está oculto do portal, qualquer aplicativo que ainda esteja usando esse runtime continuará sendo executado.

Caso queira criar um aplicativo com uma versão de runtime desatualizada que não é mais mostrada no portal, use a CLI do Azure, um modelo do ARM ou o Bicep. Essas alternativas de implantação permitem criar runtimes preteridos que são removidos do portal, mas que ainda estão sendo suportados.

Se um runtime for totalmente removido da plataforma do Serviço de Aplicativo, o proprietário da assinatura do Azure receberá um aviso por email antes da remoção.

Acessar variáveis de ambiente

No Serviço de Aplicativo, você pode definir configurações de aplicativo e cadeias de conexão fora do código do aplicativo. Em seguida, você pode acessá-las em qualquer classe usando o ASP.NET padrão:

using System.Configuration;
...
// Get an app setting
ConfigurationManager.AppSettings["MySetting"];
// Get a connection string
ConfigurationManager.ConnectionStrings["MyConnection"];
}

Se você definir uma configuração de aplicativo com o mesmo nome no Serviço de Aplicativo e em web.config, o valor do Serviço de Aplicativo terá precedência sobre o valor web.config . O valor local web.config permite depurar o aplicativo localmente. O valor do Serviço de Aplicativo permite que você execute o aplicativo no produto com configurações de produção. As cadeias de conexão funcionam da mesma maneira. Dessa forma, você pode manter os segredos do seu aplicativo fora do seu repositório de código e acessar os valores apropriados sem alterar seu código.

Observação

Considere as opções de conectividade mais seguras que não exijam segredos de conexão. Para obter mais informações, consulte Conectividade segura com os serviços e bancos de dados do Azure do Serviço de Aplicativo do Azure.

Implantar soluções multiprojetos

Quando uma solução do Visual Studio inclui vários projetos, o processo de publicação do Visual Studio inclui a seleção do projeto a ser implantado. Quando você implanta no mecanismo de implantação do App Service, como com o Git ou com a implantação via ZIP com automação de build habilitada, o mecanismo de implantação do App Service seleciona o primeiro site ou projeto de aplicativo web que encontrar como o aplicativo do App Service. Você pode definir qual projeto o Serviço de Aplicativo deve usar especificando a configuração do aplicativo PROJECT. Por exemplo, execute o seguinte comando no Cloud Shell:

az webapp config appsettings set --resource-group <resource-group-name> --name <app-name> --settings PROJECT="<project-name>/<project-name>.csproj"

Obter a página de exceções detalhadas

Quando o aplicativo ASP.NET gera uma exceção no depurador do Visual Studio, o navegador exibe uma página de exceção detalhada. Uma mensagem de erro genérica substitui essa página no Serviço de Aplicativo. Para exibir a página de exceção detalhada no Serviço de Aplicativo, abra o arquivo web.config e adicione o <customErrors mode="Off"/> elemento sob o <system.web> elemento. Por exemplo:

<system.web>
    <customErrors mode="Off"/>
</system.web>

Reimplante seu aplicativo com o web.config atualizado. Agora, você deve ver a mesma página de exceção detalhada.

Acessar logs de diagnóstico

Você pode adicionar mensagens de diagnóstico no código do aplicativo usando System.Diagnostics.Trace. Por exemplo:

Trace.TraceError("Record not found!"); // Error trace
Trace.TraceWarning("Possible data loss"); // Warning trace
Trace.TraceInformation("GET /Home/Index"); // Information trace

Para acessar os logs de console gerados de dentro do código do aplicativo no Serviço de Aplicativo, ative o log de diagnóstico executando o seguinte comando no Cloud Shell:

az webapp log config --resource-group <resource-group-name> --name <app-name> --docker-container-logging filesystem --level Verbose

Os valores possíveis para --level são Error, Warning, Info e Verbose. Cada nível seguinte inclui o anterior. Por exemplo, Error inclui apenas as mensagens de erro. Verbose inclui todas as mensagens.

Depois de ativar o log de diagnóstico, execute o seguinte comando para ver o fluxo de log:

az webapp log tail --resource-group <resource-group-name> --name <app-name>

Se os logs do console não aparecerem imediatamente, verifique novamente em 30 segundos.

Para interromper o streaming de log a qualquer momento, selecione Ctrl+C.