Página de erro personalizada do IIS 7.0 404 e web.config

1

Estou com problemas em uma página de erro 404 personalizada.

Eu tenho um domínio executando um .NET proj com seu próprio tratamento de erros. Eu tenho um web.config em execução para o domínio que contém:

<customErrors mode="RemoteOnly">
    <error statusCode="500" redirect="/Error"/>
    <error statusCode="404" redirect="/404"/>
</customErrors>

Em um subdiretório desse domínio, estou ignorando todas as rotas fazendo routes.IgnoreRoute("Assets/{*pathInfo}"); no projeto .net e quero colocar uma página de erro 404 personalizada nele e em qualquer subdiretório de Recursos. O sub dir contém conteúdo estático como imagens, css, js etc etc.

Portanto, na seção Páginas de erro do IIS, coloco um redirecionamento para uma URL absoluta.

O web.config para esse diretório se parece com o seguinte:

<system.webServer>
    <httpErrors>
        <remove statusCode="404" subStatusCode="-1" />
        <error statusCode="404" prefixLanguageFilePath="" path="http://mydomain.com/404" responseMode="Redirect" />
    </httpErrors>
</system.webServer>

Mas eu navego para um URL desconhecido sob esse diretório e ainda vejo a página padrão do IIS 404.

Também estou vendo um alerta no IIS que diz:

You have configured detailed error messages to be returned for both local and remote requests. When this option is selected, custom error configuration is not used.

Isso tem algo a ver com o customErrors mode="RemoteOnly" no site web.config?

Eu tentei sobrescrever o customErrors no sub dir web.config mas nada muda.

Qualquer ajuda seria apreciada.

Obrigado.

    
por Colin 06.05.2011 / 02:04

2 respostas

1

Você pode tentar apenas adicionar isto:

<httpErrors>
<remove statusCode="404" subStatusCode="-1" />
<error statusCode="404" prefixLanguageFilePath="" path="/index.php" responseMode="ExecuteURL" />
</httpErrors>

No seu arquivo "web.config".

    
por 20.07.2012 / 23:46
0

Isso pode ser um pouco atrasado, mas você pode colocar o seguinte na parte system.webserver do web.config

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

O crédito vai para esta entrada no Stack Overflow: link

    
por 25.05.2011 / 18:56