A cada solicitação do protocolo HTTP o servidor indica uma resposta provisória, consistindo somente da linha de status e cabeçalhos opcionais, encerrado por uma linha vazia. As respostas podem conter por exemplo erros de HTTP que são enviados para o navegador da Web pelo servidor se um problema for encontrado durante a tentativa de exibir uma página da Web. Se a página da Web não for exibida, o servidor exibirá a página de erro real enviada pelo site ou uma mensagem de erro amigável.
As vezes é útil criar uma pagina customizada para as paginas geradas automaticamente pelo servidor pois o mesmo pode mostrar nestas paginas informações que não queremos que o usuário remoto tenha conhecimento, além das boas praticas e uma mensagem esteticamente amigável, ainda temos entre os motivos, a segurança.
Para uma lista completa de todos os códigos de resposta enviados pelo servidor utilize o link abaixo:
Response Status Code: http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html
Customizando uma Página de Erro
11- Crie uma aplicação do tipo ASP.NET Web Application com o modelo C# Empty e chame seu projeto de DAWebStatusCode, crie uma nova pagina html chamada default. Copie o código para a pagina e rode o programa:
2 – Clique no link “ASP.NET” para que você obtenha a pagina de erro com a resposta gerada pelo servidor:
3 – Para substituir a pagina automática por uma pagina mais amigável precisamos capturar a resposta do servidor e exibir uma pagina com informações customizadas, entretanto não queremos que o usuário tenha acesso a esta pagina via o navegador, então precisamos criar uma pagina chamada de 404.html e alterar o web.config, redirecionando a resposta 404 para a pagina 404.html. Crie a pagina 404.html e altere o arquivo web.config utilizando os respectivos códigos abaixo, em seguida rode a aplicação:
4 – Clique novamente na opção “ASP.NET” e sua pagina customizada será exibida sem que nenhuma informação do servidor e de sua aplicação seja apresentada para o usuário remoto:
Entretanto ASP.NET possui algumas configurações diferenciadas, por exemplo no arquivo Web.Config, toda a configuração para paginas de erro customizadas em ASP.NET necessitam estar dentro da tag <system.web> na tag <customErrors> enquanto as configurações para erros HTTP necessitam estar na tag <configuration> na tag <system.webserver>.
ASP.NET Custom Error: http://msdn.microsoft.com/pt-br/library/h0hfz6fc(v=vs.85).aspx
System.webServer: http://msdn.microsoft.com/pt-br/library/bb763179(v=vs.100).aspx
Exemplo:
Neste exemplo utilizamos a resposta do servidor para substituir a mensagem de erro 404 por uma mensagem exibida em uma pagina customizada. Como estamos utilizando uma aplicação que utiliza paginas html em um modelo vazio, a configuração de erro que possui efeito é a contida nos elementos system.webServer.
HTML
default.html
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>Desenvolvimento Aberto - HTTP Respostas</title> <style> #header { background-color: Black; color: white; text-align: center; padding: 5px; } #nav { line-height: 30px; background-color: #eeeeee; height: 400px; width: 100px; float: left; padding: 5px; } #section { width: 450px; float: left; padding: 10px; } #footer { background-color: Black; color: white; clear: both; text-align: center; padding: 5px; } </style> </head> <body> <div id="header"> <h1>Desenvolvimento Aberto</h1> </div> <div id="nav"> <!-- HTTP Response: Este link referencia uma página que não existe, deste modo o servidor nos enviará um erro 404 --> <p> <a href='nao-existe.html'>ASP.NET</a> </p> <p>Web Forms</p> <p>MVC</p> <p>C#</p> </div> <div id="section"> <h2>Desenvolvimento Aberto</h2> <p> Desenvolvimento Aberto é uma organização voltada para o aprendizado e discussão de técnicas de desenvolvimento focado em algumas linguagens de programação sendo parcialmente/totalmente abertas ou com licenças gratuitas para desenvolvedores de cada uma de suas respectivas marcas registradas. </p> <p> Desenvolvimento Aberto foi escrito e desenvolve utilizando ferramentas gratuitas disponibilizadas pelas melhores empresas de software da atualidade, incluindo a própria hospedagem e design deste site, sendo assim, também proporciona conteúdo gratuito, isso quer dizer que você não paga nada para aprender e utilizar as tecnologias de ponta que podem ser manuseadas através das linguagens de programação mais requisitadas pelas empresas no mercado atual. </p> </div> <div id="footer"> Desenvolvimento Aberto © desevolvimento.aberto@live.com </div> </body> </html>
404.html
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title></title> </head> <body> <h1>Desenvolvimento Aberto</h1> <h3>Desculpe! Não encontramos a página solicitada no servidor</h3> <p>Erro: HTTP 404. </p> </body> </html>
web.config
<?xml version="1.0" encoding="utf-8"?> <!-- For more information on how to configure your ASP.NET application, please visit http://go.microsoft.com/fwlink/?LinkId=169433 --> <configuration> <system.web> <compilation debug="true" targetFramework="4.5" /> <httpRuntime targetFramework="4.5" /> <customErrors defaultRedirect="GenericError.htm" mode="On"> <error statusCode="404" redirect="404.html"/> </customErrors> </system.web> <system.webServer> <httpErrors errorMode="Custom"> <remove statusCode="404"/> <error statusCode="404" path="404.html" responseMode="ExecuteURL"/> </httpErrors> </system.webServer> </configuration>