Como diagnosticar um erro interno do servidor 500 no IIS 7.5 quando nada é gravado no log de eventos?

43

Acabei de implantar uma atualização em um site ASP.NET MVC3 existente (ele já estava configurado) e estou recebendo a tela azul do IIS informando a morte

Erro HTTP 500.0 - Erro interno do servidor
A página não pode ser exibida porque ocorreu um erro interno do servidor.

Contudo; não há nada aparecendo no log de eventos do aplicativo em que eu esperaria ver uma descrição (mais) detalhada da entrada.

Como posso diagnosticar esse problema?

Greg B
fonte
Eu tive exatamente o mesmo problema aqui. Na minha experiência, se o log de eventos estiver vazio, a solicitação não foi roteada corretamente para o processo do trabalhador. Em uma de nossas implantações recentes, vimos o aplicativo funcionar intermitentemente, com cerca de 50% das solicitações falhando aleatoriamente com o erro 500 e nada nos logs. Eu suspeito que algo está errado com o descarregamento do AppDomain que ocorre após a implantação. Por curiosidade, você está executando antivírus no seu ambiente de produção? Uma redefinição do IIS resolve o problema (até a próxima implantação)?
ShadowChaser

Respostas:

41

Dê uma olhada no recurso de rastreamento de solicitação com falha do IIS7:

Solucionando problemas de solicitações com falha usando rastreamento no IIS 7
Solucionar problemas com rastreamento de solicitação com falha

A outra coisa que eu faria é ajustar sua <httpErrors>configuração porque o IIS pode estar engolindo uma mensagem de erro de mais adiante no pipeline:

<configuration>
  <system.webServer>
    <httpErrors existingResponse="PassThrough" />
  </system.webServer>
</configuration>

Se o site estiver escrito no ASP clássico, ative a configuração Enviar erros ao navegador no recurso de configuração do ASP:

insira a descrição da imagem aqui

E, finalmente, se você estiver usando o Internet Explorer, verifique se Desativou Mostrar mensagens de erro HTTP amigáveis nas configurações Avançadas (embora eu suspeite que você já tenha feito isso ou esteja usando outro navegador).

Kev
fonte
2
existingResponse foi definido como Substituir. Obrigado pela dica.
22812 Greg B
Essa é uma resposta muito boa, mas poderia ser aprimorada se incluísse como iniciar a janela de configuração do ASP.
Michael Potter
13

No meu caso:

  • O log de eventos estava vazio.
  • web.config não estava corrompido - verificado usando o mesmo na máquina local / usando inetmgr

Finalmente...

  • A verificação dos logs do IIS mostrou uma solicitação como esta

...Chrome/57.0.2987.133+Safari/537.36 500 19 5 312

A chave é:

sc-status sc-substatus sc-win32-status 500 19 5

que, com alguma pesquisa no Google, me indicou que IIS_USRSnão tenho permissões de leitura para a wwwpasta

decreto
fonte
2
Encontrei a lista de códigos de status aqui: support.microsoft.com/en-us/help/943891/…
sirdank
4

O problema mais óbvio são os direitos NTFS incorretos ou nulos na pasta do aplicativo da web. Portanto, verifique se a conta que atende o site tem as permissões corretas. Sem os direitos NTFS adequados para o diretório da web, não importa o que você coloca no web.config, pois nunca será lido.

Uma verificação rápida pode ser dar a todos os direitos plenos - se o site começar a funcionar, você saberá que é um problema de direitos e poderá então atribuir direitos apropriados a uma conta mais apropriada.

arriscar
fonte
1

Se estiver atualizando do IIS6, pode ser que o web.config funcione no 6, mas não no IIS 7.5 ... Clique duas vezes em todos os ícones no IIS do site e você poderá receber um erro sobre o formato (Seção deve estar abaixo de outra seção ...)

M Hall
fonte
0

Eu tive o mesmo problema com um Azure Web App. Durante a depuração local, as mensagens de erro (JSON) retornadas das chamadas ajax foram totalmente retornadas ao navegador. Porém, uma vez implantadas no Web App, as mensagens foram engolidas e uma mensagem de erro padrão 500 foi retornada. Então, eu tive que definir explicitamente o existingResponsevalor PassThroughna httpErrorstag web.config .

Loul G.
fonte