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>




