ASP.NET – Responses – Status Code – C#

Publicado: 3 de dezembro de 2014 em C#

A cada solicitação do protocolo HTTP o servidor indica uma resposta provisória, consistindo somente da linha de status e cabeçalhos opcionaisencerrado 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:

Default.html

Default.html

2 – Clique no link “ASP.NET” para que você obtenha a pagina de erro com a resposta gerada pelo servidor:

ASP.NET - Erro

ASP.NET – Erro

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:

Default.html

Default.html

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:

Erro - Customizado

Erro – Customizado

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>
Anúncios

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

w

Conectando a %s