Redirecionando Usuários para uma Página 404 Personalizada no ASP.NET MVC

No mundo das aplicações web, manter uma experiência de usuário contínua é essencial. Imagine um usuário digitando cuidadosamente uma URL apenas para ser recebido por uma frustrante página de erro devido a uma rota inexistente. Isso pode deixar os usuários confusos e desapontados. Felizmente, como desenvolvedores, temos a capacidade de aprimorar nossas aplicações lidando de forma elegante com tais cenários.

Neste post do blog, vamos explorar como redirecionar usuários para uma página de erro 404 personalizada no ASP.NET MVC quando eles tentam acessar um controlador inexistente.

Entendendo o Problema

Quando um usuário tenta visitar uma URL que não corresponde a nenhum controlador ou ação na sua aplicação ASP.NET MVC, uma exceção é lançada. Por exemplo, se alguém tenta navegar para:

http://www.nosite.com/paeges/1

Essa URL está incorreta e deve ser resolvida para o controlador /pages/. Em vez de levar o usuário a uma mensagem de erro genérica, queremos redirecioná-lo para uma página 404 personalizada, amigável e informativa.

Visão Geral da Solução

Para alcançar esse objetivo, precisamos configurar nossa aplicação ASP.NET MVC para lidar com exceções de roteamento redirecionando para uma página 404 especificada. Aqui está uma descrição passo a passo de como fazer isso.

Etapa 1: Defina Sua Página de Erro Personalizada

Antes de entrarmos na configuração de roteamento, o primeiro passo é criar uma página 404 personalizada. Esta pode ser uma visualização simples que informa o usuário sobre o erro e, possivelmente, sugere links úteis.

  • Crie uma Visualização: No seu diretório /Views/Shared/, adicione uma nova visualização chamada Error404.cshtml.
  • Designe o Conteúdo: Certifique-se de que o conteúdo seja amigável ao usuário. Por exemplo:
    <h1>Oops! Página Não Encontrada</h1>
    <p>Desculpe, a página que você está procurando não existe. Verifique a URL ou volte para a página inicial.</p>
    

Etapa 2: Atualize o Web.Config para Erros Personalizados

Em seguida, você precisa informar sua aplicação ASP.NET MVC para exibir a página de erro personalizada quando o código de status HTTP especificado ocorrer. Abra seu arquivo Web.config e adicione as seguintes linhas:

<system.web>
  <customErrors mode="On" defaultRedirect="~/Error404">
    <error statusCode="404" redirect="~/Error404" />
  </customErrors>
</system.web>
  • mode: Defina isso como On para ativar páginas de erro personalizadas.
  • defaultRedirect: Este é o caminho para sua página de erro personalizada.
  • error: Isso especifica que, quando um erro 404 ocorrer, a aplicação deve redirecionar para a página especificada.

Etapa 3: Manipule Rotas no arquivo Global.asax

Em seguida, você quer garantir que problemas de roteamento sejam capturados. Abra seu arquivo Global.asax e adicione o seguinte método:

protected void Application_Error()
{
    Exception exception = Server.GetLastError();
    HttpException httpException = exception as HttpException;

    if (httpException != null)
    {
        int httpCode = httpException.GetHttpCode();
        if (httpCode == 404) // Não encontrado
        {
            Response.Clear();
            Server.ClearError();
            Response.Redirect("~/Error404");
        }
    }
}
  • Application_Error(): Este método é executado sempre que um erro não tratado ocorre em sua aplicação.
  • Capture a Exceção: O código captura a exceção e verifica se o código de status HTTP é 404.
  • Redirecionar: Se for, limpe o erro e redirecione o usuário para sua página 404 personalizada.

Conclusão

Seguindo essas etapas, você pode garantir que os usuários que navegam para páginas inexistentes sejam recebidos por uma página de erro 404 amigável em vez de uma mensagem de exceção genérica. Isso não apenas melhora a experiência do usuário, mas também mantém um nível de profissionalismo em sua aplicação ASP.NET MVC.

À medida que você continua a construir e aprimorar suas aplicações web, lembre-se de que a maneira como você lida com erros diz muito sobre sua atenção aos detalhes e compromisso com a satisfação do usuário. Dedique um tempo para implementar essas mudanças simples e veja o impacto positivo na usabilidade da sua aplicação web.


Com esses passos simples, você pode aprimorar a maneira como sua aplicação ASP.NET MVC lida com erros de roteamento. Boa codificação!