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

Observação

Para ASP.NET Core, confira 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, enquanto o mecanismo de implantação do Serviço de Aplicativo implanta o repositório de código primeiro e, em seguida, compila os binários.

Este guia fornece os principais conceitos e instruções para desenvolvedores de ASP.NET. Se você nunca usou o Serviço de Aplicativo do Azure, siga o Início Rápido do ASP.NET e o tutorial do ASP.NET com Banco de Dados SQL 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 as versões de runtime do .NET Framework e do SDK disponíveis para você, navegue até https://<app-name>.scm.azurewebsites.net/DebugConsole e execute o comando apropriado no console baseado no 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"

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

Execute o comando abaixo 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 em vez disso, 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

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 no web.config, o valor do Serviço de Aplicativo terá precedência sobre o valor de web.config. O valor de web.config local permite que você depure o aplicativo localmente, mas o valor do Serviço de Aplicativo permite que você execute o aplicativo no produto com as configurações de produção. As cadeias de conexão funcionam da mesma maneira. Dessa forma, você pode manter os segredos do aplicativo fora do seu repositório de código e acessar os valores apropriados sem alterar seu código.

Implantar soluções multiprojetos

Quando uma solução do Visual Studio inclui vários projetos, o processo de publicação do Visual Studio já inclui a seleção do projeto a ser implantado. Quando você usa o mecanismo de implantação do Serviço de Aplicativo, como com o Git ou ZIP com a automação de compilação ativada, o mecanismo de implantação do Serviço de Aplicativo escolhe o primeiro site da Web ou Projeto de Aplicativo Web que ele encontra como o aplicativo do Serviço de Aplicativo. Você pode definir qual projeto o Serviço de Aplicativo deve usar especificando a configuração do aplicativo PROJECT. Por exemplo, execute o seguinte 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 seu aplicativo ASP.NET gera uma exceção no depurador do Visual Studio, o navegador exibe uma página de exceção detalhada, mas no Serviço de Aplicativo que a página é substituída por uma mensagem de erro genérica. Para exibir a página de exceção detalhada no Serviço de Aplicativo, abra o arquivo Web.config e adicione o elemento <customErrors mode="Off"/> sob o elemento <system.web>. 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 em seu código de 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 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 mensagens de erro e Verbose inclui todas as mensagens.

Depois que o log de diagnósticos estiver ativado, execute o seguinte comando para ver o fluxo de logs:

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

Se você não vir os logs do console imediatamente, verifique novamente após 30 segundos.

Observação

Você também pode inspecionar os arquivos de log do navegador em https://<app-name>.scm.azurewebsites.net/api/logs/docker.

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

Mais recursos