May 17 2007
The resource cannot be found: HTTP 404
Você já se deparou com o erro abaixo?
Description: HTTP 404. The resource you are looking for (or one of its dependencies) could have been removed, had its name changed, or is temporarily unavailable. Please review the following URL and make sure that it is spelled correctly.
Estava lendo o tradicional blog do Benjamin Day e encontrei um post sobre a provável causa desta mensagem.
No .NET 2.0 está disponível uma nova funcionalidade para fazer com que a aplicação fique totalmente indisponível por um tempo. Isto é muito conveniente quando o site está sendo atualizado (envio de arquivos, troca de assemblies, reestruturação do banco de dados, etc).
Para que isto ocorra, basta criar um arquivo chamado App_Offline.htm dentro da pasta raiz da aplicação. Exemplo:

Todos os requests feitos ao site (independente da pasta ou arquivo da url) serão redirecionados para o App_Offline.htm. Vale a pena salientar que se você deixar este arquivo sem conteúdo algum, uma mensagem padrão será apresentada (que é a descrita logo no início do post). No entanto, você pode personalizar da forma que bem entender.
Indo um pouco mais a fundo no assunto, O ScottGu dá uma dica para que esta técnica funcione corretamente no IE 6. Nesta versão do Internet Explorer há uma feature chamada Show Friendly Http Errors (Tools -> Internet Options -> Advanced), ou no bom português: Mostrar mensagens de erro http amigáveis.
Quando esta opção estiver habilitada e o servidor retornar um status HTTP diferente do 200 e com menos de 512 bytes, o browser não irá mostrar o conteúdo do arquivo App_Offline.htm, mas sim aquela página de erro padrão:

A dica é: se você quer apresentar uma mensagem muito curta (menor que 512 bytes), utilize comentários para completar o tamanho que falta. Exemplo (do próprio blog do Scott):
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" > <head> <title>Site Under Construction</title> </head> <body> <h1>Under Construction</h1> <h2>Gone to Florida for the sun...</h2> <!-- Adding additional hidden content so that IE Friendly Errors don't prevent this message from displaying (note: it will show a "friendly" 404 error if the content isn't of a certain size). <h2>Gone to Florida for the sun...</h2> <h2>Gone to Florida for the sun...</h2> <h2>Gone to Florida for the sun...</h2> <h2>Gone to Florida for the sun...</h2> <h2>Gone to Florida for the sun...</h2> <h2>Gone to Florida for the sun...</h2> <h2>Gone to Florida for the sun...</h2> <h2>Gone to Florida for the sun...</h2> <h2>Gone to Florida for the sun...</h2> <h2>Gone to Florida for the sun...</h2> <h2>Gone to Florida for the sun...</h2> <h2>Gone to Florida for the sun...</h2> <h2>Gone to Florida for the sun...</h2> --> </body> </html>
Feio né?
Acho que vale mais a pena perder uns 15 minutos pra criar uma mensagem amigável.
Até +.








Ótima dica. Muita gente faz esse controles com includes ou ainda com filtros HTTP, que além de impactarem na performance do site, “reinventam a roda”.
Abraços,
Caio Proiete