Mensagem de erro detalhada 500, ASP + IIS 7.5

192

IIS 7.5, 2008rc2, asp clássico, 500 msg de erro:

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

Preciso saber como configurar o IIS para obter um erro mais detalhado.
Eu tentei definir como true todas as opções de depuração na configuração do ASP.
Mas isso não funcionou. Alguém pode me ajudar?

egidiocs
fonte
Eu estou usando maneira diferente para log de erro no arquivo de texto: stackoverflow.com/questions/20475502/... diferença principal - informatin erro será armazenado em arquivo de texto
Zam

Respostas:

231

Eu vim para o mesmo problema e resolvi da mesma maneira que Alex K .

Portanto, se "Enviar erros ao navegador" não estiver funcionando, defina também este:

Páginas de erro -> 500 -> Editar configurações de recursos -> "Erros detalhados"

insira a descrição da imagem aqui

Observe também que, se o conteúdo da página de erro enviada de volta for muito curto e você estiver usando o IE, o IE ignorará o conteúdo útil enviado de volta pelo servidor e exibirá sua própria página de erro genérica. Você pode desativar isso nas opções do IE ou usar outro navegador.

Vaclav Elias
fonte
9
Se ele ainda não está funcionando, desativar mensagens de erro HTTP amigáveis
Tim Partridge
3
Se "Páginas de erro" estiver ausente no seu painel, verifique se o recurso está ativado: Ative ou desative os recursos do Windows => Serviços WWW, Recursos HTTP comuns, [x] erros HTTP
inicie em
1
@fiat Para ativar "Erro Páginas", eu tinha que ir: Turn Windows features on or off > Internet Information Services > World Wide Web Services > Common HTTP Features > [✓] HTTP Errors.
Jess Telford
Nota: "Páginas de erro" e "Páginas de erro do .NET" são diferentes. Você deseja especificamente "Páginas de erro" .
Jess Telford
@JessTelford HOW-TOfor NET Error Pages ?
Kanjet
94

Se você estiver em um servidor remoto, poderá configurar seu arquivo web.config da seguinte forma:

<configuration>
<system.webServer>
    <httpErrors errorMode="Detailed" />
    <asp scriptErrorSentToBrowser="true"/>
</system.webServer>
<system.web>
    <customErrors mode="Off"/>
    <compilation debug="true"/>
</system.web>

safhac
fonte
1
Na verdade, as <system.webserver>configurações foram suficientes no meu caso, obrigado.
marapet
4
A system.webServerseção é lida pelo IIS 7 ou superior, mesmo ao executar o ASP clássico
Tim Lewis
2
customErrors mode = "Off" fez isso por mim
spankmaster79
não é mais necessário usar customErrors(por exemplo, IIS 7+, ASP.NET, Classic AppPool ) tedgustaf.com/blog/2011/5/…
Kiquenet
49

Clique duas vezes em "ASP" na tela inicial do site no administrador do IIS, expanda "Propriedades de depuração", ative "Enviar erros ao navegador" e clique em "Aplicar".

Em "Páginas de erro" na tela inicial, selecione "500", "Editar configurações de recursos" e selecione "Erros detalhados".

Observe que as mesmas etapas se aplicam ao IIS 8.0 (Windows Server 2012).

Alex K.
fonte
Talvez se aplica ao IIS 7.5, Windows 2008 R2, ASP.NET 4.5.1 (WebForms) com CLASSIC AppPool (não integrados)
Kiquenet
43

Depois de tentar a resposta de Vaclav e Alex , eu ainda tinha que desativar "Mostrar mensagens de erro HTTP amigáveis" no IE

insira a descrição da imagem aqui

Tim Partridge
fonte
20

No web.config em

<system.webServer>

substituir (ou adicionar) a linha

<httpErrors errorMode="Detailed"></httpErrors>

com

<httpErrors existingResponse="PassThrough" errorMode="Detailed"></httpErrors>

Isso ocorre porque, por padrão, o IIS7 intercepta códigos de status HTTP, como 4xx e 5xx, gerados por aplicativos mais adiante no pipeline.

Em seguida, ative " Enviar erros ao navegador " na seção "ASP" e em " Páginas de erro / Editar configurações de recursos" ", selecione "Erros detalhados".

Além disso, conceda permissões de gravação na pasta do site ao grupo interno IIS_IUSRS .

Niente00
fonte
1
Para o equivalente de usuário do shell de energia, execute:Set-WebConfigurationProperty '/system.WebServer/httpErrors' -Name errorMode -Value Detailed
Blaskovicz
20

TLDR: primeiro determine de onde no pipeline você está obtendo o erro (role procurando capturas de tela de algo semelhante ao seu erro), faça alterações para obter algo novo, repita.

Primeiro, determine qual mensagem de erro você está realmente vendo.

Se você estiver vendo o arquivo localizado aqui ...

% SystemDrive% \ inetpub \ custerr \\ 500.htm

... que geralmente se parece com isso:

Erro 500 padrão do IIS

... então você sabe que está vendo a página de erro atualmente configurada em ** IIS ** e NÃO precisa alterar a configuração ASP.net customErrors, a configuração de detalhes de erro do asp ou a configuração do navegador "mostrar erros http amigáveis".

Você pode querer olhar para o caminho acima mencionado, em vez de confiar na minha captura de tela para o caso de alguém mudar.

"Sim, vejo o erro descrito acima ..."

Nesse caso, você está vendo a configuração de < httpErrors > ou, no Gerenciador do IIS, é Páginas de erro -> Editar configurações de recursos. O padrão para isso é errorMode = DetalhadoLocalOnly no nível do nó do servidor (em oposição ao nível do site), o que significa que, enquanto você vir esta página de erro configurada enquanto remota, poderá fazer logon localmente no servidor e ver a descrição completa. erro que deve ser algo como isto:

Erro HTTP detalhado

Você deve ter tudo o que precisa nesse momento para corrigir o erro atual.

"Mas não vejo o erro detalhado nem mesmo navegando no servidor"

Isso deixa algumas possibilidades.

  1. O navegador que você está usando no servidor está configurado para usar um proxy nas configurações de conexão, para que não seja visto como "local".
  2. Na verdade, você não está navegando no site em que pensa estar navegando - isso geralmente acontece quando há um balanceador de carga envolvido. Faça uma verificação de ping para ver se o dns fornece um IP no servidor ou em outro lugar.
  3. Você é httpErrors do site configurações de estão definidas apenas para "Personalizado". Altere para "DetalhadoLocalOnly". No entanto, se você tiver um erro de configuração, isso pode não funcionar, pois o httpErrors no site também é um item de configuração. Nesse caso, prossiga para # 4
  4. O padrão para httpErrors para todos os sites é definido como "Personalizado". Nesse caso, você precisa clicar no nó do servidor de nível superior no Gerenciador do IIS (e não em um site específico) e alterar as configurações de httpErrors para DetalhadoLocalOnly. Se este for um servidor interno e você não estiver preocupado com a divulgação de informações confidenciais, também poderá defini-lo como "Detalhado", o que permitirá que você veja o erro de outros clientes que não o servidor.
  5. Está faltando um módulo no servidor como o UrlRewrite (este me incomoda muito, e muitas vezes fornece a mensagem genérica, independentemente das configurações do httpErrors).

"Fazer logon no servidor não é uma opção para mim"

Altere os httpErrors do seu site para "Detalhado" para poder vê-lo remotamente. Mas se não funcionar, seu erro já pode ser um erro de configuração, consulte o item 3 imediatamente acima. Então você pode ficar com o 4 ou 5 e precisará de alguém da sua equipe de servidores.

"Não estou vendo a página de erro descrita acima. Estou vendo algo diferente"

Se você vir isso ...

insira a descrição da imagem aqui

... e você espera ver algo assim ...

insira a descrição da imagem aqui

... então você precisa alterar "Enviar erros para o navegador" para true no Gerenciador do IIS, em Site -> IIS -> ASP -> Propriedades de depuração

Se você vir isso ...

ou seja, erros amigáveis ​​1

ou isto...

ie erros amigáveis ​​2

... você precisa desativar os erros amigáveis ​​no seu navegador ou usar a visualização na web do violinista para analisar a resposta real versus o que o navegador escolhe para mostrar a você.

Se você vir isso ...

Erros personalizados ativados

... então os erros personalizados estão funcionando, mas você não tem uma página de erro personalizada (é claro que neste momento estávamos falando de .net e não de asp clássico). Você precisa alterar sua tag customErrors em seu web.config para RemoteOnly para exibir no servidor ou Off para visualizar remotamente.

Se você vir algo com o estilo do seu site, é provável que os erros personalizados sejam On ou RemoteOnly e estejam exibindo a página personalizada (Visualizações-> Compartilhado-> Erro.cshtml no MVC, por exemplo). Dito isso, é improvável, mas possível, que alguém tenha alterado as páginas no IIS para httpErrors, portanto, consulte a primeira seção sobre isso.

b_levitt
fonte
9

tente definir o valor do atributo httpErrors "existente", como "PassThrough". O meu foi definido como "Substituir", o que estava fazendo com que o YSOD não fosse exibido.

<httpErrors errorMode="Detailed" existingResponse="PassThrough">
Dana Benson
fonte
2
customErrors são para asp.net. Os httpErrors são para o IIS7 e, portanto, manipulam o conteúdo que não passa pelo manipulador .net (por exemplo, .png, .js etc.) Se você deseja páginas de erro para tipos de conteúdo que não sejam do .NET, use páginas de erro do IIS (httpErrors for IIS7 , a interface do usuário para IIS6.) O atributo customErrors é usado quando o código .net está lançando uma exceção (404, 403, 500 etc) e o atributo httpErrors é usado quando o próprio IIS está lançando uma exceção. Isso ocorre porque, por padrão, o IIS7 intercepta códigos de status HTTP, como 4xx e 5xx, gerados por aplicativos mais adiante no pipeline.
Kiquenet 6/10
6

Uma coisa que ninguém mencionou é como uma correção muito rápida e temporária. Você pode visualizar o erro no host local desse servidor web.

RandomUs1r
fonte
1
Isso se a terceira opção visível na resposta de Vaclav estiver selecionada.
ricksmt
3

Você também pode verificar se, se alterou a pasta principal do site ( c:\inetpub\wwwroot) para outra pasta, deve conceder permissão de leitura ao grupo IIS_IUSRS na nova pasta.

Rogerio Barretto
fonte
3

Fot pessoas que tentaram TUDO e simplesmente NÃO PODEM obter os detalhes do erro para mostrar, como eu, é uma boa ideia verificar os diferentes níveis de configuração. Eu tenho um arquivo de configuração no nível do site e no nível do aplicativo (dentro do site), verifique os dois. Além disso, despejei os Erros detalhados no nó mais alto do IIS (logo abaixo da página inicial, ele tem o nome igual ao nome do computador dos servidores da web). Verifique as páginas de erro lá.

Jon Koeter
fonte
1

Se você executar o navegador no servidor e testar sua URL do projeto com o IP local, receberá todos os erros desse projeto sem uma página de erro geral (por exemplo, página de erro 500).

Ali Rasouli
fonte