¿Cómo redirecciono a un usuario a una página 404 personalizada en ASP.NET MVC en lugar de lanzar una excepción?


18

Quiero ser capaz de capturar la excepción que se produce cuando un usuario solicita un controlador inexistente y lo redirige a una página 404. ¿Cómo puedo hacer esto?

Por ejemplo, el usuario solicita http://www.nosite.com/paeges/1 (debe ser/pages/). ¿Cómo lo hago para que sean redirigidos a la pantalla 404 en lugar de a la pantalla de excepción?

6

Eche un vistazo a this page para enrutar los errores 404 a una página especificada.

+2

Es posible que desee actualizar la respuesta de incluir los detalles pertinentes en el mismo. 17 may. 162016-05-17 05:03:44


16

sólo tiene que utilizar una ruta:

// We couldn't find a route to handle the request. Show the 404 page. 
routes.MapRoute("Error", "{*url}", 
    new { controller = "Error", action = "404" } 
); 

Dado que este será un controlador global, puesto que todo el camino en la parte inferior en virtud de la ruta por defecto.

+6

¿Es esto correcto? Porque seguro si defino una ruta para {controller}/{action}/{id} digamos, y el usuario ingresa la url con un controlador que no existe, entonces se mostrará en pantalla amarilla, ya que esa primera ruta coincidirá y su atrapar todo nunca se alcanzará? 22 oct. 082008-10-22 19:48:03

  0

Acabo de probar esto, y sigo obteniendo la pantalla amarilla predeterminada 404. 15 dic. 112011-12-15 21:03:17

+1

Esto funciona, pero significa que tienes que tener rutas manuales para todos tus controladores, es decir, no '{controller}/{action}/{id } 'en su lugar, tendría que hacer' Home/{acción}/{id} ',' Cuenta/{acción}/{id} ', etc. 22 ene. 132013-01-22 23:01:38

  0

@SerjSagan, hoy en día, puede usar restricciones de ruta, como:' rutas .MapRoute ( name: "Inicio", url: "{acción}", valores predeterminados: nuevo {controller = "Home", action = "Index"}, constraints: new {action = "Index | Help | Orders "} );' 08 mar. 162016-03-08 12:43:01


1

Encontramos en el mismo sitio - Strategies for Resource based 404s

+1

Las respuestas de enlace único se desaconsejan en SO. 21 oct. 162016-10-21 22:27:38