Solucionar problemas de um aplicativo no Serviço de Aplicativo do Azure usando o Visual Studio
Observação
Esse artigo é para o Visual Studio 2019. Para obter a solução de problemas no Visual Studio 2022, consulte Depurar Remotamente o ASP.NET Core no Serviço de Aplicativo do Azure.
Visão geral
Este tutorial mostra como usar ferramentas do Visual Studio para ajudar a depurar um aplicativo no Serviço de Aplicativo, seja executando-o no modo de depuração remotamente ou exibindo logs do aplicativo e do servidor Web.
O que você aprenderá:
- Quais funções de gerenciamento de aplicativo estão disponíveis no Visual Studio.
- Como usar a exibição remota do Visual Studio para fazer alterações rápidas em um aplicativo remoto.
- Como executar o modo de depuração remotamente enquanto um projeto está em execução no Azure, tanto para um aplicativo quanto para um Trabalho Web.
- Como criar logs de rastreamento de aplicativos e exibi-los enquanto o aplicativo os está criando.
- Como exibir logs do servidor Web, inclusive mensagens de erro detalhadas e rastreamento de solicitação com falha.
- Como enviar logs de diagnóstico para uma conta de armazenamento do Azure e exibi-los nela.
Se você tiver o Visual Studio Ultimate, também é possível utilizar o IntelliTrace para depuração. O IntelliTrace não é abordado neste tutorial.
Pré-requisitos
Este tutorial funciona com o ambiente de desenvolvimento, projeto Web e aplicativo do Serviço de Aplicativo que você configurou em Criar um aplicativo ASP.NET no Serviço de Aplicativo do Azure. Para as seções do WebJobs, você precisará do aplicativo que você criou na Introdução ao SDK do Azure WebJobs.
Os exemplos de código mostrados neste tutorial são para um aplicativo Web MVC em C#, mas os procedimentos para solução de problemas são os mesmos para aplicativos em Visual Basic e Web Forms.
O tutorial presume que você esteja usando o Visual Studio 2019.
O recurso de logs de streaming funciona apenas para aplicativos que tenham como alvo o .NET Framework 4 ou posterior.
Gerenciamento e configuração de aplicativo
O Visual Studio fornece acesso a um subconjunto das funções de gerenciamento de aplicativo e das definições de configuração disponíveis no portal do Azure. Nesta seção, você verá o que está disponível usando o Gerenciador de Servidores. Para ver os últimos recursos de integração do Azure, experimente também o Cloud Explorer . Você pode abrir as duas janelas do menu de Exibição .
Se você não tiver entrado no Azure no Visual Studio, clique com botão direito em Azure e selecione Conectar à Assinatura do Microsoft Azure no Gerenciador de Servidores.
Uma alternativa é instalar um certificado de gerenciamento que dê acesso à conta. Se você optar por instalar um certificado, clique com o botão direito do mouse no nó Azure do Gerenciador de Servidores e selecione Gerenciar e Filtrar Assinaturas no menu de contexto. Na caixa de diálogo Gerenciar Assinaturas do Microsoft Azure, clique na guia Certificados e em Importar. Siga as instruções para baixar e importe um arquivo de assinatura (também chamado de arquivo .publishsettings ) para a conta do Azure.
Observação
Se você baixar um arquivo de assinatura, salve-o em uma pasta fora dos diretórios de código-fonte (por exemplo, na pasta Downloads) e exclua-o após a conclusão da importação. Um usuário mal-intencionado que consiga acesso ao arquivo de assinatura pode editar, criar e excluir os serviços do Azure.
Para obter mais informações sobre como se conectar aos recursos do Azure por meio do Visual Studio, veja Atribuir funções do Azure usando o portal do Azure.
No Gerenciador de Servidores, expanda Azure e Serviço de Aplicativo.
Expanda o grupo de recursos que inclui o aplicativo que você criou em Criar um aplicativo do ASP.NET no Serviço de Aplicativo do Azure e, em seguida, clique com o botão direito do mouse no nó do aplicativo e clique em Exibir Configurações.
A guia Aplicativo Web do Azure aparece e nela você pode ver as tarefas de configuração e gerenciamento de aplicativos que estão disponíveis no Visual Studio.
Neste tutorial, você usará os menus suspensos de log e rastreamento. Você também usará a depuração remota, mas utilizará um método diferente para habilitá-la.
Para saber mais sobre as caixas Configurações do Aplicativo e Cadeias de Conexão nesta janela, veja Serviço de Aplicativo do Azure: Como as cadeias de caracteres do aplicativo e as cadeias de conexão funcionam.
Se desejar executar uma tarefa de gerenciamento do aplicativo que não possa ser concluída nessa janela, clique em Abrir no Portal de Gerenciamento para abrir uma janela do navegador para o portal do Azure.
Acessar arquivos de aplicativo no Gerenciador de Servidores
Você tipicamente implanta um projeto Web com o customErrors
sinalizador no arquivo Web.config definido como On
ou RemoteOnly
, o que significa que você não receberá uma mensagem de erro útil quando algo dá errado. Para muitos erros, tudo o que você recebe é uma página como uma das páginas a seguir:
Erro de servidor no aplicativo '/':
Ocorreu um erro:
O site não pode exibir a página
Normalmente, a maneira mais fácil de encontrar a causa do erro é habilitar mensagens de erro detalhadas, que a primeira das capturas de tela anteriores explica como fazer. Isso exige uma alteração no arquivo Web.config implantado. Você pode editar o arquivo Web.config no projeto e reimplantá-lo ou criar uma Transformação de Web.config
e implantar uma compilação de depuração. Mas há uma maneira mais rápida: no Gerenciador de Soluções , você pode visualizar e editar arquivos diretamente no aplicativo remoto usando o recurso de exibição remota.
No Gerenciador de Servidores, expanda Azure, expanda Serviço de Aplicativo, expanda o grupo de recursos em que seu aplicativo está localizado em e, em seguida, expanda o nó de seu aplicativo.
Você vê nós que dão acesso aos arquivos de conteúdo e de log do aplicativo.
Expanda o nó Arquivos e clique duas vezes no arquivo Web.config .
O Visual Studio abre o arquivo Web.config no aplicativo remoto e mostra Remoto ao lado do nome do arquivo na barra de título.
Adicione a seguinte linha ao elemento
system.web
:<customErrors mode="Off"></customErrors>
Atualize o navegador que está mostrando a mensagem de erro inútil, e agora você recebe uma mensagem de erro detalhada, como o seguinte exemplo:
(O erro mostrado foi criado adicionando-se a linha mostrada em vermelho a Views\Home\Index.cshtml.)
A edição do arquivo Web.config é apenas um exemplo dos cenários em que a capacidade de ler e editar arquivos no aplicativo Serviço de Aplicativo do Azure facilita a solução de problemas.
Aplicativos de depuração remota
Se a mensagem de erro detalhada não oferecer informações suficientes e não for possível recriar o erro localmente, outra maneira de solucionar o problema é executar no modo de depuração remotamente. Você pode definir os pontos de interrupção, manipular diretamente a memória, percorrer o código e até mesmo alterar o caminho do código.
A depuração remota não funciona em edições Express do Visual Studio.
Esta seção mostra como depurar remotamente usando o projeto que você criou em Criar um aplicativo ASP.NET no Serviço de Aplicativo do Azure.
Abra o projeto da web que você criou em Criar um aplicativo ASP.NET no Serviço de Aplicativo do Azure.
Abra o Controllers\HomeController.cs.
Exclua o método
About()
e insira o código a seguir em seu lugar.public ActionResult About() { string currentTime = DateTime.Now.ToLongTimeString(); ViewBag.Message = "The current time is " + currentTime; return View(); }
Defina um ponto de interrupção na linha
ViewBag.Message
.No Gerenciador de Soluções, clique com o botão direito do mouse no projeto e clique em Publicar.
Na lista suspensa de Perfil, selecione o mesmo perfil que você usou em Criar um aplicativo ASP.NET no Serviço de Aplicativo do Azure. Em seguida, clique em Configurações.
Na caixa de diálogo Publicar, clique em Configurações e altere Configuração para Depuração e, em seguida, clique em Salvar.
Clique em Publicar. Quando a implantação for concluída e o navegador abrir a URL do Azure do seu aplicativo, feche o navegador.
No Gerenciador de Servidores, clique com o botão direito do mouse no seu aplicativo e clique em Anexar Depurador.
O navegador é aberto automaticamente na home page em execução no Azure. Convém aguardar cerca de 20 segundos enquanto o Azure configura o servidor para depuração. Esse atraso ocorre apenas na primeira execução que você realiza em modo de depuração em um aplicativo em um período de 48 horas. Quando você começa a depurar novamente no mesmo período, não há atraso.
Observação
Se você tiver problemas para iniciar o depurador, tente fazer isso usando o Cloud Explorer em vez do Gerenciador de Servidores.
Clique em Sobre no menu.
O Visual Studio para no ponto de interrupção, e o código está em execução no Azure, e não no computador local.
Focalize a variável
currentTime
para ver o valor da hora.A hora que você vê é a hora do servidor do Azure, que pode estar em um fuso horário diferente do computador local.
Insira um novo valor para a variável
currentTime
, como "Agora em execução no Azure".Pressione F5 para continuar a execução.
A página Sobre em execução no Azure exibe o novo valor que você inseriu na variável currentTime.
Trabalhos Web de depuração remota
Esta seção mostra como depurar remotamente usando o projeto e o aplicativo que você criou na Introdução ao SDK do Azure WebJobs.
Os recursos mostrados nesta seção só estão disponíveis no Visual Studio 2013 com a Atualização 4 ou posterior.
A depuração remota só funciona com Trabalhos Web contínuos. Trabalhos Web agendados e sob demanda não oferecem suporte a depuração.
Abra o projeto Web que você criou na Introdução ao SDK do Azure WebJobs.
No projeto ContosoAdsWebJob, abra Functions.cs.
Defina um ponto de interrupção na primeira instrução do método
GenerateThumbnail
.No Gerenciador de Soluções, clique com o botão direito do mouse no projeto Web (não no projeto de Trabalho Web) e clique em Publicar.
Na lista suspensa Perfil , selecione o mesmo perfil que você utilizou em Introdução ao SDK de Trabalhos Web do Azure.
Clique na guia Configurações e altere Configuração para Depuração e, em seguida, clique em Publicar.
O Visual Studio implanta os projetos Web e de Trabalho Web, e o seu navegador abre a URL do Azure do seu aplicativo.
Em Gerenciador de Servidores, expanda Azure > Serviço de Aplicativo > seu grupo de recursos > seu aplicativo > WebJobs > Contínuo e clique com o botão direito do mouse em ContosoAdsWebJob.
Clique em Anexar o depurador.
O navegador é aberto automaticamente na home page em execução no Azure. Convém aguardar cerca de 20 segundos enquanto o Azure configura o servidor para depuração. Esse atraso ocorre apenas na primeira execução que você realiza em modo de depuração em um aplicativo em um período de 48 horas. Quando você começa a depurar novamente no mesmo período, não há atraso.
No navegador da Web que estiver aberto na home page do Contoso Ads, crie um novo anúncio.
A criação de um anúncio faz com que uma mensagem de fila seja criada, a qual é capturada pelo trabalho Web e processada. Quando o SDK de trabalhos Web chama a função para processar a mensagem de fila, o código atinge seu ponto de interrupção.
Quando o depurador for interrompido no seu ponto de interrupção, será possível examinar e alterar os valores das variáveis enquanto o programa estiver sendo executado na nuvem. Na ilustração a seguir, o depurador mostra o conteúdo do objeto blobInfo que foi passado para o método
GenerateThumbnail
.Pressione F5 para continuar a execução.
O método
GenerateThumbnail
termina de criar a miniatura.No navegador, atualize a página de índice e você verá a miniatura.
No Visual Studio, pressione SHIFT+F5 para parar a depuração.
No Gerenciador de Servidores, clique com botão direito do mouse no nó ContosoAdsWebJob e clique em Painel de exibição.
Entre com suas credenciais do Azure e, em seguida, clique no nome do trabalho Web para ir à página do seu trabalho Web.
O painel que mostra a função
GenerateThumbnail
foi executada recentemente.(Na próxima vez que você clicar em Painel de exibição, não será necessário entrar e o navegador vai diretamente para a página do Trabalho Web.)
Clique no nome da função para ver detalhes sobre a execução da função.
Se a sua função criou logs, você pode clicar em ToggleOutput para vê-los.
Observações sobre a depuração remota
A execução em modo de depuração em produção não é recomendada. Se o aplicativo de produção não for dimensionado para várias instâncias de servidor, a depuração impedirá que o servidor Web responda a outras solicitações. Se houver várias instâncias de servidor Web, ao anexar o depurador você obterá uma instância aleatória e não há como garantir que suas solicitações subsequentes do navegador irão para a mesma instância. Além disso, normalmente você não implanta uma compilação de depuração em produção e as otimizações do compilador para compilações de versão podem impossibilitar a exibição do que está acontecendo linha por linha em seu código-fonte. Para solucionar problemas de produção, os melhores recursos são o rastreamento do aplicativo e os logs do servidor Web.
Evite paradas longas em pontos de interrupção durante a depuração remota. O Azure trata um processo parado por mais de alguns minutos como um processo sem resposta e o desliga.
Enquanto você está depurando, o servidor está enviando dados para o Visual Studio, o que pode afetar os encargos de largura de banda. Para obter informações sobre as taxas de largura de banda, consulte Preço do Azure.
Verifique se o atributo
debug
do elementocompilation
no arquivo Web.config está definido como verdadeiro. Por padrão, ele é definido como true quando você publica uma configuração de compilação de depuração.<system.web> <compilation debug="true" targetFramework="4.5" /> <httpRuntime targetFramework="4.5" /> </system.web>
Se você descobrir que o depurador não entra no código que você deseja depurar, será preciso alterar a configuração de Just My Code. Para obter mais informações, consulte Especificar se quer depurar somente o código do usuário usando Apenas Meu Código no Visual Studio.
Um timer é iniciado no servidor quando você habilita o recurso de depuração remota e, após 48 horas, o recurso é desativado automaticamente. Esse limite de 48 horas é definido por razões de segurança e desempenho. Você pode reativá-lo facilmente quantas vezes quiser. É recomendável deixá-lo desabilitado quando você não está depurando ativamente.
Você pode anexar manualmente o depurador a qualquer processo, não apenas ao processo do aplicativo (w3wp.exe). Para obter mais informações sobre como usar o modo de depuração no Visual Studio, consulte Depurando no Visual Studio.
Visão geral dos logs de diagnóstico
Um aplicativo ASP.NET executado em um aplicativo do Serviço de Aplicativo pode criar os seguintes tipos de logs:
- Logs de rastreamento de aplicativos
O aplicativo cria esses logs chamando métodos da classe System.Diagnostics.Trace . - Logs do Web Server
O servidor web cria uma entrada no log para cada solicitação HTTP ao aplicativo. - Logs de mensagens de erro detalhadas
O servidor Web cria uma página HTML com algumas informações adicionais para solicitações HTTP com falha (solicitações que resultam em um código de status 400 ou superior). - Logs de rastreamento de solicitações com falha
O servidor Web cria um arquivo XML com informações de rastreamento detalhadas para solicitações HTTP com falha. O servidor Web também fornece um arquivo XSL para formatar o XML em um navegador.
Como o registro em log afeta o desempenho do aplicativo, o Azure oferece a possibilidade de habilitar ou desabilitar cada tipo de log conforme necessário. Para logs de aplicativo, você pode especificar que apenas os logs acima de um determinado nível de gravidade devem ser gravados. Por padrão, quando você cria um novo aplicativo, todo o registro em log está desabilitado.
Os logs são gravados em arquivos em uma pasta LogFiles no sistema de arquivos de seu aplicativo e são acessíveis via FTP. Os logs de servidor Web e de aplicativo também podem ser gravados em uma conta de armazenamento do Azure. Você pode manter um volume maior de logs em uma conta de armazenamento do que o que é possível no sistema de arquivos. Você está limitado a um máximo de 100 megabytes de logs ao usar o sistema de arquivos. (Os logs do sistema de arquivos são apenas para retenção de curto prazo. O Azure exclui arquivos de log antigos para abrir espaço para novos quando o limite é atingido.)
Criar e exibir logs de rastreamento de aplicativos
Nesta seção, você executará as seguintes tarefas:
- Adicionar instruções de rastreamento ao projeto Web que você criou em Introdução ao Azure e ASP.NET.
- Exiba os logs ao executar o projeto localmente.
- Exiba os logs conforme eles são gerados pelo aplicativo em execução no Azure.
Para saber mais sobre como criar logs de aplicativo em Trabalhos Web, confira Como trabalhar com o armazenamento de fila do Azure utilizando o SDK de Trabalhos Web: como gravar logs. As instruções a seguir para exibir logs e controlar como eles são armazenados no Azure também se aplicam a logs de aplicativos criados por Trabalhos Web.
Adicionar instruções de rastreamento ao aplicativo
Abra Controllers\HomeController.cs e substitua os métodos
Index
,About
eContact
pelo seguinte código para adicionar instruçõesTrace
e uma instruçãousing
paraSystem.Diagnostics
:public ActionResult Index() { Trace.WriteLine("Entering Index method"); ViewBag.Message = "Modify this template to jump-start your ASP.NET MVC application."; Trace.TraceInformation("Displaying the Index page at " + DateTime.Now.ToLongTimeString()); Trace.WriteLine("Leaving Index method"); return View(); } public ActionResult About() { Trace.WriteLine("Entering About method"); ViewBag.Message = "Your app description page."; Trace.TraceWarning("Transient error on the About page at " + DateTime.Now.ToShortTimeString()); Trace.WriteLine("Leaving About method"); return View(); } public ActionResult Contact() { Trace.WriteLine("Entering Contact method"); ViewBag.Message = "Your contact page."; Trace.TraceError("Fatal error on the Contact page at " + DateTime.Now.ToLongTimeString()); Trace.WriteLine("Leaving Contact method"); return View(); }
Adicione uma instrução
using System.Diagnostics;
ao todo do arquivo.
Exibir a saída do rastreamento localmente
Pressione F5 para executar o aplicativo em modo de depuração.
O ouvinte de rastreamento padrão grava toda a saída de rastreamento na janela Saída , junto com as outras saídas de Depuração. A ilustração a seguir mostra a saída das instruções de rastreamento que você adicionou ao método
Index
.As etapas a seguir mostram como exibir a saída do rastreamento em uma página da web, sem compilação em modo de depuração.
Abra o arquivo Web.config do aplicativo (localizado na pasta do projeto) e adicione um elemento
<system.diagnostics>
ao final do arquivo pouco antes do elemento de fechamento</configuration>
:<system.diagnostics> <trace> <listeners> <add name="WebPageTraceListener" type="System.Web.WebPageTraceListener, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" /> </listeners> </trace> </system.diagnostics>
O WebPageTraceListener
permite exibir a saída do rastreamento navegando até /trace.axd
.
Adicione um elemento trace em
<system.web>
no arquivo Web.config, como no seguinte exemplo:<trace enabled="true" writeToDiagnosticsTrace="true" mostRecent="true" pageOutput="false" />
Pressione CTRL+F5 para executar o aplicativo.
Na barra de endereços da janela do navegador, adicione trace.axd à URL e pressione Enter (a URL é semelhante a
http://localhost:53370/trace.axd
).Na página de Rastreamento do aplicativo, clique em Exibir detalhes na primeira linha (não a linha BrowserLink).
A página Solicitar Detalhes é exibida e, na seção Informações de Rastreamento, você vê a saída das instruções de rastreamento que adicionou ao método
Index
.Por padrão,
trace.axd
só está disponível localmente. Se quisesse disponibilizá-lo em um aplicativo remoto, você poderia adicionarlocalOnly="false"
ao elementotrace
no arquivo Web.config, conforme mostrado no seguinte exemplo:<trace enabled="true" writeToDiagnosticsTrace="true" localOnly="false" mostRecent="true" pageOutput="false" />
No entanto, habilitar
trace.axd
em um aplicativo de produção não é recomendado por motivos de segurança. Nas seções a seguir, você verá uma maneira mais fácil de ler os logs de rastreamento em um aplicativo do Serviço de Aplicativo.
Exibir a saída de rastreamento no Azure
No Gerenciador de Soluções, clique com o botão direito do mouse no projeto Web e clique em Publicar.
Na caixa de diálogo Publicar na Web, clique em Publicar.
Depois de publicar sua atualização, o Visual Studio abre uma janela do navegador em sua home page (supondo que você não limpou a URL de destino na guia Conexão).
No Gerenciador de Servidores, clique com o botão direito do mouse no aplicativo e selecione Exibir Logs de Streaming.
A janela Saída mostra que você está conectado ao serviço de streaming de log e adiciona uma linha de notificação a cada minuto que passa sem um log para exibir.
Na janela do navegador que mostra a home page do aplicativo, clique em Contato.
Em alguns segundos, a saída do rastreamento em nível de erro adicionado ao método
Contact
é exibida na janela Saída .O Visual Studio está mostrando apenas rastreamentos em nível de erro porque essa é a configuração padrão quando você habilita o serviço de monitoramento de log. Quando você cria um novo aplicativo do Serviço de Aplicativo, todo registro em log é desabilitado por padrão, como você viu quando abriu a página de configurações anteriormente:
No entanto, ao selecionar Exibir logs de streaming, o Visual Studio alterou automaticamente Registro em Log de aplicativo (sistema de arquivos) para Erro, o que significa que os logs em nível de erro são relatados. Para ver todos os logs de rastreamento, você pode alterar essa configuração para Detalhado. Quando você seleciona um nível de severidade inferior a erro, todos os logs para níveis de severidade mais altos são relatados. Portanto, quando selecionar detalhado, você também verá logs de informações, avisos e erros.
No Gerenciador de Servidores, clique com o botão direito do mouse no aplicativo e clique em Exibir Configurações como fez anteriormente.
Altere Registro em Log de Aplicativo (Sistema de Arquivos) para Detalhado e, em seguida, clique em Salvar.
Na janela do navegador que está mostrando sua página Contato, clique em Página Inicial, em seguida, clique em Sobre e, em seguida, em Contato.
Em poucos segundos, a janela Saída janela mostra toda a saída de rastreamento.
Nesta seção, você habilitou e desabilitou o registro em log usando as configurações de aplicativo. Você também pode habilitar e desabilitar os ouvintes de rastreamento modificando o arquivo Web.config. No entanto, a modificação do arquivo Web.config faz com que o domínio do aplicativo seja reciclado, enquanto a habilitação do registro em log por meio da configuração do aplicativo não faz isso. Se o problema levar muito tempo para ser reproduzido, ou for intermitente, a reciclagem do domínio de aplicativo pode "corrigir" isso e forçar você a esperar até que o problema ocorra novamente. A habilitação do diagnóstico no Azure permite começar a capturar informações de erro imediatamente sem reciclar o domínio do aplicativo.
Recursos da janela Saída
A guia Logs do Microsoft Azure da janela Saída tem vários botões e uma caixa de texto:
Desempenham as seguintes funções:
- Limpe a janela Saída .
- Habilite ou desabilite a quebra automática de linha.
- Inicie ou pare logs de monitoramento.
- Especifique quais logs monitorar.
- Baixe logs.
- Filtre logs com base em uma cadeia de caracteres de pesquisa ou uma expressão regular.
- Feche a janela Saída .
Se você inserir uma cadeia de caracteres de pesquisa ou uma expressão regular, o Visual Studio filtrará as informações de log no cliente. Isso significa que você pode inserir os critérios depois que os logs são exibidos na janela Saída e pode alterar os critérios de filtragem sem precisar gerar os logs novamente.
Exibir logs de servidor Web
Logs do servidor Web registram toda a atividade HTTP para o aplicativo. Para vê-los na janela Saída, você precisa habilitá-los no aplicativo e informar ao Visual Studio que deseja monitorá-los.
Na guia Configuração de Aplicativo Web do Azure que você abriu no Gerenciador de Servidores, altere o Registro em Log de Servidor Web para Ativado e, em seguida, clique em Salvar.
Na janela Saída, clique no botão Especificar quais logs do Microsoft Azure monitorar.
Na caixa de diálogo Opções de Registro em Log do Microsoft Azure, selecione Logs do servidor Web e clique em OK.
Na janela do navegador que mostra o aplicativo, clique em Página Inicial, clique em Sobre e, em seguida, clique em Contato.
Os logs de aplicativo geralmente aparecem primeiro, seguidos dos logs de servidor web. Talvez seja necessário esperar algum tempo para que os logs sejam exibidos.
Por padrão, quando você habilita os logs do servidor Web pela primeira vez usando o Visual Studio, o Azure grava os logs no sistema de arquivos. Como alternativa, você pode usar o portal do Azure para especificar que os logs de servidor Web devem ser gravados em um contêiner de blob em uma conta de armazenamento.
Se você usar o portal para habilitar o registro em log do servidor Web para uma conta de armazenamento do Azure e desabilitar o registro em log no Visual Studio, quando reabilitar o registro em log no Visual Studio, as configurações da conta de armazenamento serão restauradas.
Exibir logs de mensagens de erro detalhadas
Os logs detalhados de erro fornecem algumas informações adicionais sobre solicitações HTTP que resultam em códigos de resposta de erro (400 ou acima). Para vê-los na janela Saída, você precisa habilitá-los no aplicativo e informar ao Visual Studio que deseja monitorá-los.
Na guia Configuração de Aplicativo Web do Azure que você abriu no Gerenciador de Servidores, altere Mensagens de Erro Detalhadas para Ativado e clique em Salvar.
Na janela Saída, clique no botão Especificar quais logs do Microsoft Azure monitorar.
Na caixa de diálogo Opções de Registro em Log do Microsoft Azure, clique em Todos os logs e clique em OK.
Na barra de endereços da janela do navegador, adicione um caractere extra à URL para provocar um erro 404 (por exemplo,
http://localhost:53370/Home/Contactx
) e pressione Enter.Após vários segundos, o log detalhado de erros é exibido na janela Saída do Visual Studio.
Clique no link mantendo a tecla Control pressionada para ver a saída do log formatada em um navegador:
Baixar logs do sistema de arquivos
Todos os logs que podem ser monitorados na janela Saída também podem ser baixados como um arquivo . zip .
Na janela Saída, clique em Baixar Logs de Streaming.
O Explorador de Arquivos abre em sua pasta Downloads com o arquivo baixado selecionado.
Extraia o arquivo . zip e você verá a seguinte estrutura de pastas:
Os logs de rastreamento de aplicativos estão em arquivos .txt na pasta LogFiles\Application.
Os logs de servidor Web estão em arquivos .log na pasta LogFiles\http\RawLogs. Você pode usar uma ferramenta como o Analisador de log (a página pode estar em inglês) para exibir e manipular esses arquivos.
Os logs de mensagens de erro detalhadas estão em arquivos .html na pasta LogFiles\DetailedErrors.
(A pasta deployments é para os arquivos criados pela publicação de controle do código-fonte; ela não tem nada relacionado à publicação do Visual Studio. A pasta Git é para rastreamentos relacionados à publicação de código-fonte e o serviço de streaming de arquivos de log.)
Exibir logs de rastreamento de solicitações com falha
Os logs de rastreamento de solicitação com falha são úteis quando você precisa entender os detalhes de como o IIS trata uma solicitação HTTP, em cenários como problemas de autenticação ou regravação de URL.
Os aplicativos do Serviço de Aplicativo usam a mesma funcionalidade de rastreamento de solicitação com falha disponível no IIS 7.0 e em versões posteriores. No entanto, você não tem acesso às configurações do IIS que configuram quais erros são registrados em log. Quando você habilita o rastreamento de solicitação com falha, todos os erros são capturados.
Você pode habilitar o rastreamento de solicitação com falha usando o Visual Studio, mas não pode exibi-lo no Visual Studio. Esses logs são arquivos XML. O serviço de log de streaming monitora apenas os arquivos que são considerados legíveis no modo de texto sem formatação: arquivos .txt, .html e .log.
Você pode exibir os logs de rastreamento de solicitação com falha em um navegador diretamente por meio de FTP ou localmente depois de usar uma ferramenta FTP para baixá-los em seu computador local. Nesta seção, você irá exibi-los diretamente em um navegador.
Na guia Configuração da janela Aplicativo Web do Azure que você abriu no Gerenciador de Servidores, altere Rastreamento de Solicitação com Falha para Ativado e clique em Salvar.
Na barra de endereços da janela do navegador que mostra o aplicativo, adicione um caractere extra para a URL e pressione Enter para provocar um erro 404.
Isso faz com que um log de rastreamento de solicitação com falha seja criado e as etapas seguintes mostram como exibir ou baixar o log.
No Visual Studio, na guia Configuração da janela Aplicativo Web do Azure, clique em Abrir no Portal de Gerenciamento.
Na página Portal do Azure Configurações do seu aplicativo, clique em Credenciais de implantação e insira um novo nome de usuário e uma senha.
Observação
Quando você fizer logon, será preciso usar o nome de usuário completo com o nome do aplicativo como prefixo dele. Por exemplo, se você inserir "myid" como um nome de usuário e o site é "meuexemplo", fará logon como "meuexemplo\myid".
Em uma nova janela do navegador, vá para a URL mostrada em Nome do host FTP ou Nome do host FTPS na página Visão geral do seu aplicativo.
Faça logon usando as credenciais do FTP que você criou anteriormente (incluindo o prefixo do nome do aplicativo para o nome de usuário).
O navegador mostra a pasta raiz do aplicativo.
Abra a pasta LogFiles .
Abra a pasta chamada W3SVC mais um valor numérico.
A pasta contém arquivos XML para todos os erros que foram registrados em log depois que você habilitou o rastreamento de solicitação com falha e um arquivo XSL que um navegador pode usar para formatar o XML.
Clique no arquivo XML da solicitação com falha da qual você deseja ver as informações de rastreamento.
A ilustração a seguir mostra parte das informações de rastreamento de um erro de amostra.
Próximas etapas
Você viu como o Visual Studio facilita a exibição de logs criados por um aplicativo do Serviço de Aplicativo. As seguintes seções fornecem links para mais recursos sobre tópicos relacionados:
- Solução de problemas do Serviço de Aplicativo
- Depurando no Visual Studio
- Depuração remota no Azure
- Rastreando em aplicativos ASP.NET
- Analisando logs de servidor Web
- Analisando logs de rastreamento de solicitação com falha
- Depurando serviços de nuvem
Solução de problemas do Serviço de Aplicativo
Para saber mais sobre como solucionar problemas de aplicativos no Serviço de Aplicativo do Azure, confira os seguintes recursos:
- Como monitorar aplicativos
- Investigando perdas de memória em Serviço de Aplicativo do Azure com o Visual Studio 2013. Postagem no blog do Microsoft ALM sobre os recursos do Visual Studio para análise de problemas de memória gerenciados.
- Ferramentas online do Serviço de Aplicativo do Azure sobre as quais você deve saber. Postagem de blog de Amit Apple.
Para obter ajuda com uma pergunta específica de solução de problemas, inicie um thread em um dos seguintes fóruns:
Depurando no Visual Studio
Para obter mais informações sobre como usar o modo de depuração no Visual Studio, consulte Depurando no Visual Studio e Dicas de depuração no Visual Studio 2010.
Depuração remota no Azure
Para saber mais sobre a depuração remota para aplicativos do Serviço de Aplicativo do Azure e Trabalhos Web, confira os seguintes recursos:
- Introdução à depuração remota do Serviço de Aplicativo do Azure.
- Introdução à depuração remota do Serviço de Aplicativo do Azure parte 2 - Por dentro da depuração remota
- Introdução à depuração remota do Serviço de Aplicativo do Azure parte 3 - Ambiente de várias instâncias e GIT
- Depuração de Trabalhos Web (vídeo)
Se o aplicativo usar uma API Web do Azure ou um back-end de Serviços Móveis e você precisar depurá-lo, confira Depurando back-end do .NET no Visual Studio.
Rastreando em aplicativos ASP.NET
Não existem introduções completas e atualizadas para rastreamento do ASP.NET disponíveis na Internet. O melhor a fazer é começar com materiais introdutórios antigos escritos para formulários da Web porque o MVC ainda não existia e complementar isso com postagens em blog mais recentes focalizadas em problemas específicas. Alguns bons locais para começar são os seguintes recursos:
Monitoramento e telemetria (Compilando aplicativos de nuvem do mundo real com o Azure).
Capítulo do livro eletrônico com recomendações para rastreamento em aplicativos de nuvem do Azure.Rastreamento do ASP.NET
Antigo, mas ainda é um bom recurso para obter uma introdução básica sobre o assunto.Ouvintes de rastreamento
Informações sobre ouvintes de rastreamento, mas não menciona o WebPageTraceListener.Passo a passo: Integrando o rastreamento do ASP.NET com rastreamento do System.Diagnostics
Esse artigo também é antigo, mas inclui algumas informações adicionais que o artigo introdutório não cobre.Rastreamento em exibições do Razor do ASP.NET MVC
Além do rastreamento em exibições do Razor, a postagem também explica como criar um filtro de erros para registrar em log todas as exceções não tratadas em um aplicativo MVC. Para obter informações sobre como registrar em log exceções não tratadas em um aplicativo de formulários da Web, consulte o exemplo do Global.asax em Concluir exemplo para manipuladores de erro no MSDN. No MVC ou em Formulários da Web, para registrar certas exceções em log, mas deixar o tratamento da estrutura padrão cuidar deles, você poderá capturar e relançar como no exemplo a seguir:try { // Your code that might cause an exception to be thrown. } catch (Exception ex) { Trace.TraceError("Exception: " + ex.ToString()); throw; }
Registro em log de rastreamento do diagnóstico de streaming na linha de comando do Azure (mais Glimpse!)
Como usar a linha de comando para fazer o que este tutorial mostra no Visual Studio. Glimpse (a página pode estar em inglês) é uma ferramenta para depuração de aplicativos ASP.NET.Usando diagnóstico e registro em log de Aplicativos Web – com David Ebbo e Logs de streaming dos Aplicativos Web – com David Ebbo
Vídeos de Scott Hanselman e David Ebbo.
Para o registro em log de erros, uma alternativa para escrever seu próprio código de rastreamento é usar uma estrutura de registros em log de software livre, como o ELMAH. Para obter mais informações, consulte as postagens no blog de Scott Hanselman sobre o ELMAH.
Além disso, você não precisa usar ASP.NET ou System.Diagnostics
rastreamento para obter logs de streaming do Azure. O serviço de log de streaming do aplicativo do Serviço de Aplicativo transmite qualquer arquivo .txt, .html ou .log que encontra na pasta LogFiles. Portanto, você pode criar seu próprio sistema de log que grava no sistema de arquivos do aplicativo, e o arquivo é automaticamente transmitido e baixado. Tudo o que você precisa fazer é escrever o código do aplicativo que cria arquivos na pasta d:\home\logfiles.
Analisando logs de servidor Web
Para obter mais informações sobre como analisar logs de servidor web, consulte os seguintes recursos:
- LogParser
Uma ferramenta para exibir dados em logs de servidor Web (arquivos.log ). - Solução de problemas de desempenho do IIS ou erros de aplicativo usando o LogParser
Uma introdução à ferramenta LogParser que pode ser usada para analisar logs de servidor web. - Postagens no blog por Robert McMurray sobre como usar o LogParser
- O código de status HTTP no IIS 7.0, IIS 7.5 e IIS 8.0
Analisando logs de rastreamento de solicitação com falha
O site do Microsoft TechNet inclui uma seção Usando rastreamento de solicitação com falha que pode ser útil para entender como usar esses logs. No entanto, essa documentação se concentra principalmente na configuração do rastreamento de solicitação com falha no IIS, o que você não pode fazer em Serviço de Aplicativo do Azure.