IIS 8.5 - recebendo erro ao retornar o arquivo 404 estático

4

IIS8.5 > Sites > mysite > Páginas de erro > 404

  • Selecione "Inserir conteúdo do arquivo estático na resposta de erro".

  • Desmarque a opção "Tente devolver o arquivo de erro no idioma do cliente".

  • Digite o caminho para "notfound.html", verifiquei que está lá.

Quando visito uma página que eu conheço, não estou lá:

The page cannot be displayed because an internal server error has occurred.

Por que não estou recebendo meu arquivo 404 personalizado?

Eu não acho que é uma coisa de permissão, eu tentei mover "notfound.html" para vários lugares, um dos quais é a pasta wwwroot do site que serve o resto do site.

    
por Marcus 19.03.2014 / 21:30

2 respostas

3

Este erro é gerado porque um caminho absoluto é detectado em web.config .

Caminho físico absoluto (como C:\path\to\notfound.html ) não é permitido na seção system.webServer/httpErrors no arquivo web.config .

Agora você tem 2 soluções:

1. Permitir caminho físico no arquivo ApplicationHost.config

Por padrão, esse arquivo está localizado em %SystemRoot%\system32\inetsrv\config

Localize este arquivo e edite-o

Procure a seção <httpErrors ..... >

Em seguida, adicione a diretiva allowAbsolutePathsWhenDelegated="true" , da seguinte forma:

<httpErrors lockAttributes="allowAbsolutePathsWhenDelegated,defaultPath" allowAbsolutePathsWhenDelegated="true">
   ....
   ....
</httpErrors>

Salve o arquivo, deve funcionar!

2. Use o caminho relativo

Caminho relativo significa que você terá que armazenar suas páginas de erro personalizadas na pasta raiz do site da Web.

Depois, vá para IIS > Sites > mysite > Error Pages > 404

E configure sua página de erro personalizada assim:

Clique em OK , deve funcionar!

EDITAR:

No entanto, observe que:

  • A solução 1 envia uma resposta 404 Not Found
  • A solução 2 envia uma resposta 200 OK
por 19.03.2014 / 23:06
1

Eu bisbilhotei e descobri que existe uma coisa chamada "allowAbsolutePathsWhenDelegated" que é definida como "false" por padrão.

IIS8.5 > Sites > mysite > Management > Configuration Editor > system.webServer/httpErrors

No entanto, o valor está bloqueado e não pode ser editado lá. Então eu cliquei na raiz da árvore e pude editá-la lá.

IIS8.5 > Management > Configuration Editor > system.webServer/httpErrors

Note que a raiz não é realmente chamada "IIS8.5", é nomeada após o nome do seu computador.

Então, depois que allowAbsolutePathsWhenDelegated foi definido como true, tudo funcionou bem. Uma solução diferente seria colocar o arquivo estático na pasta wwwroot do meu site e digitar o nome dele como a página de erro 404 (embora no meu caso seja melhor com um caminho absoluto em vez de um relativo).

O que me incomoda é que não há menção em nenhuma parte da tela "Páginas de erro" sobre essa restrição padrão. Ele não diz nada sobre o caminho ter que ser relativo à raiz do seu site e como o padrão NÃO é relativo (está na pasta inetpub), você supõe que um caminho absoluto funcionaria bem.

Espero que a Microsoft corrija este problema de interface em uma versão posterior. Apenas seja mais claro sobre quaisquer restrições nos campos de entrada, por favor.

    
por 20.03.2014 / 20:15