Por que o IIS não executará minha página 404 personalizada? Ele tenta servir o código-fonte cru

4

Estou tentando configurar erros personalizados no IIS6.

Selecione o erro 404, defina o menu suspenso como "URL" e insira-o como a URL "/404.aspx"

Quando você vai para:

link

Ele encontra 404.aspx, mas não o processa como uma página .Net - ele tenta servir a fonte como um arquivo XML e falha porque não é analisado.

Os 404 funcionam bem em páginas .Net porque eu configuro isso no elemento CustomErrors do web.config. Mas para recursos não-Net, eu tenho que usar erros do IIS, e se recusa a apenas redirecionar para a página 404. Está tentando servir o código-fonte, essencialmente.

    
por Deane 01.07.2009 / 23:14

8 respostas

1

Você tem as extensões corretas ativadas no IIS6? No gerenciador do IIS, vá para Extensões da Web (geralmente o último item na árvore de navegação à esquerda) e verifique se todas as apropriadas estão ativadas (geralmente .NET). Caso contrário, é exatamente isso que acontecerá.

    
por 01.07.2009 / 23:19
0

Já tentou colocar o URL completo em vez de apenas o "/"? Eu pensei que este comportamento aconteceu quando você escolheu "arquivo" e não URL, mas, talvez, se é um URL local, ele também ignora o processo de trabalho do ASP.Net.

    
por 01.07.2009 / 23:33
0

Parece que você tem um bug no próprio arquivo de erro. Se você navegar até o arquivo, ele será exibido corretamente ou você terá os mesmos sintomas?

    
por 01.07.2009 / 23:43
0

Eu não acho que você pode ter uma página dinâmica servida como seu 404. Se bem me lembro, ele precisa ser uma página estática. Eu acho que você poderia redirecionar com meta ou JS para uma página dinâmica de lá, embora isso não seja "padrão"

    
por 01.07.2009 / 23:44
0

Este Artigo do Technet diz para ter certeza e escolha URL, ou arrisca-se a devolver o código-fonte da página.

Este artigo explica como você pode usar o arquivo global.asax para capturar todos os erros de aplicativo, incluindo 404.

O Global.asax precisa ter:

protected void Application_Error(object sender, EventArgs e)
{
}

When any exception is thrown now—be it a general exception or a 404—it will end up in Application_Error.

    
por 02.07.2009 / 02:16
0

O que você deseja é definir a lista suspensa para URL e, em seguida, inserir "/sitename/404.aspx", em que sitename é o diretório-raiz do site.

    
por 02.07.2009 / 07:02
0

Ele realmente age como se você configurasse "Arquivo" em vez de "URL" - mas você não o fez. O que acontece quando você insere o URL 404 inteiro em um navegador? Se isso funcionar, você pode tentar inserir o URL completo em vez de /404.aspx :

http://www.example.com/404.aspx

Você menciona que este é o servidor de um cliente. Certifique-se de que não há dois sites apontando para o mesmo diretório físico e você está editando o errado. Há mais E certifique-se de que o site está marcado como aplicativo.

    
por 05.07.2009 / 12:43
0

Do jeito que você está tentando usar o web.config para apontar para uma página de erro do .NET. Isso só funcionará para páginas .Net. Se você usar uma combinação de, por exemplo, ASP Clássico e .Net, deverá definir os erros do IIS para apontar para o arquivo desejado. Para isso, você precisa ter acesso ao servidor diretamente. Ou escreva algo em seu Global.asa para redirecionar os erros.

Pelo menos é assim que eu sempre tive que fazer isso.

Editar: Agora que estou pensando um pouco mais sobre isso e explorei meu host local, não parece que você possa apontar os erros personalizados para uma página .Net. Ele não parece usar o ASP.NET para processar as páginas que, obviamente, são necessárias para processá-las. Você precisará usar uma página HTML e talvez redirecionar a partir daí.

    
por 06.07.2009 / 17:59