Estamos trabajando en algo propio llamado KODOTI. Click para unirte
Se viene KODOTI. Únete

Implementando un Custom Error Page con ASP.NET MVC

En está entrada vamos a implementar una página de error personalizado para nuestros proyectos ASP.NET MVC.

Rodríguez Patiño, Eduardo
9,904 lecturas
Rodríguez Patiño, Eduardo
Hemos migrado hace poco nuestras publicaciones del blog antiguo. Si crees que esta se encuentra incompleta o sin coherencia deja un comentario para restaurarla manualmente.

Bien señores, está entrada es bastante sencilla y práctica, el objetivo es mostrar una linda página personalizada a nuestros usuarios en vez de la pantalla amarilla de errores.

 

Modificando el Global.asax.cs

Lo primero que vamos hacer es ir a nuestro Global.asax.cs y agregar el método para detectar errores.

protected void Application_Error(object sender, EventArgs e)
{
    Exception exception = Server.GetLastError();
    Response.Clear();

    HttpException httpException = exception as HttpException;

    int error = httpException != null ? httpException.GetHttpCode() : 0;

    Server.ClearError();
    Response.Redirect(String.Format("~/Error/?error={0}", error, exception.Message));
}

Lo que estamos haciendo ahí es redireccionar al controlador Error, y pasarle un parámetro indicando el tipo de error, ya sea 404 (página no encontrada), 500 (error en el servidor) entre otros. ¿Entonces que tenemos que hacer ahora?, implementar nuestro controlador Error.

 

Creando nuestro controlador Error

Nuestra acción Index va a recibir un parámetro del tipo numérico el cual es el tipo de error ocurrido, lo que nos queda hacer es una validación simple para cargar información sobre los ViewBag.

public class ErrorController : Controller
{
    // GET: Error
    public ActionResult Index(int error = 0)
    {
        switch (error)
        {
            case 505:
                ViewBag.Title = "Ocurrio un error inesperado";
                ViewBag.Description = "Esto es muy vergonzoso, esperemos que no vuelva a pasar ..";
                break;

            case 404:
                ViewBag.Title = "Página no encontrada";
                ViewBag.Description = "La URL que está intentando ingresar no existe";
                break;

            default:
                ViewBag.Title = "Página no encontrada";
                ViewBag.Description = "Algo salio muy mal :( ..";
                break;
        }

        return View("~/views/error/_ErrorPage.cshtml");
    }
}

Realizado esto solo nos queda implementar nuestra vista.

 

La vista de errores

En mi caso yo lo he hecho muy simple y estoy heredando de un Layout, por lo cual mi código ha quedado de esta manera.


@ViewBag.Description

 

Realizando pruebas

  • 404: digiten en la URl un controlador o acción que no exista como, ilove/bbq
  • 500: produzcan una excepción no controlada en algún controlador, este debería redireccionar a la página de error.

 

Adjunto el ejemplo para descargar el cual lo he implementando dentro del proyecto que vimos como hacer un login con ASP.NET MVC.

PD: con un poco de CSS pueden mejorar su página personalizada de errores, búsquen en google: CSS Custom Error Pages, debe salir una lista de páginas listas para usarlas en nuestro proyecto.

¿Te gustó nuestra publicación?
Suscríbete a nuestro boletín