Como configurar um arquivo Web.Config para permitir o tratamento 404 customizado enquanto ainda exibe detalhes de erro na página 500?

7

Para personalizar o manuseio de 404 e com base na sugestão da empresa de hospedagem, estamos atualmente usando a seguinte configuração web.config. No entanto, percebemos rapidamente que, com essa configuração, qualquer erro de página (erro 500) também está sendo redirecionado para essa página de erro personalizada. Como posso modificar esse arquivo de configuração para continuarmos a lidar com o 404 com o arquivo personalizado, enquanto ainda conseguimos visualizar o erro na página?

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.webServer>
<httpErrors errorMode="DetailedLocalOnly" defaultPath="/Custom404.html" defaultResponseMode="ExecuteURL">
<remove statusCode="404" subStatusCode="-1" />
<error statusCode="404" prefixLanguageFilePath="" path="/Custom404.html" responseMode="ExecuteURL" />
</httpErrors>
</system.webServer>
<system.web>
<customErrors mode="On">
<error statusCode="404" redirect="/Custom404.html" />
</customErrors>
</system.web>
</configuration>
    
por squillman 23.09.2009 / 20:32

4 respostas

3

Tente isso -

<configuration>
   <system.webServer>
      <httpErrors errorMode="Custom" defaultResponseMode="File" >
         <remove statusCode="404" />
         <remove statusCode="500" />
         <error statusCode="404" 
            path="404.html" />
         <error statusCode="500" 
            path="500.html" />
       </httpErrors>
   </system.webServer>
</configuration>

A página de erro 404 é 404.html e está localizada na minha raiz, assim como a página 500

    
por 14.06.2013 / 00:17
2

O ASP clássico não passa pelo erro no IIS7 por padrão. Para ativar isso em um site, execute o seguinte na linha de comando, certificando-se de substituir {sitename} pelo seu site de nomes:

c:\windows\system32\inetsrv\appcmd.exe set config "{sitename}" -section:system.webServer/httpErrors /existingResponse:"PassThrough" /commit:apphost

Além disso, certifique-se de desativar os erros amigáveis do IIS. Eles realmente não são amigáveis.

    
por 10.11.2009 / 22:40
2

Estou descobrindo uma série de soluções complicadas para o ASP Clássico no IIS 7.5 para lidar com o tipo de tratamento de erros personalizado do IIS 6 para um código de erro específico, geralmente 404. Espero que isso ajude as pessoas que se deparam com ele.

Estou executando o IIS 7.5 R2, mas acho que isso se aplica ao IIS 7 em geral.

Se o seu arquivo web.config tiver isto:

<customErrors mode="On">

... no Gerenciador do IIS, você provavelmente selecionou Editar recursos em Páginas de erro para alterar os recursos no painel Editar configurações das páginas de erro. Se você alterar isso para Páginas de erro personalizadas (customErrors mode="On"), você será forçado a configurar o tratamento de cada um dos números de erro. Então não faça isso.

Tudo o que você precisa fazer é clicar com o botão direito no número do erro que deseja manipular e selecionar Editar. Lá você pode apontar para uma página de erro personalizada criada ou redirecionada para um URL. Em vez de criar uma página de erro personalizada que você deve lembrar de atualizar quando o design ou os menus do seu site mudarem, sugiro sempre redirecionar para a home page e adicionar algo à querystring como? Syserror, que você pode manipular na home page. Minha técnica é verificar isso no script da página inicial e exibir uma mensagem amigável informando que a página não foi encontrada e eles foram direcionados para a página inicial.

Seu arquivo web.config seria algo como isto:

<httpErrors>
<remove statusCode="404" subStatusCode="-1" />
<error statusCode="404" prefixLanguageFilePath="" 
path="http://yoursite.com/index.asp?syserror" responseMode="Redirect" />
</httpErrors>

Também sugiro que você não ative mensagens de erro detalhadas em um site de produção como uma precaução de segurança, mesmo para locais. Basta procurar os detalhes no seu registro do sistema.

Apenas meus 2 centavos, espero que ajude e por favor deixe-me saber se você acha que estou incorreto em qualquer coisa aqui.

    
por 13.09.2011 / 18:40
1

Basta adicionar outro valor para 500 erros.

<customErrors mode="On">
<error statusCode="404" redirect="/Custom404.html" />
<error statusCode="500" redirect="/Custom500.html" />
</customErrors>
    
por 23.09.2009 / 20:34