2011-04-27 25 views
5

Tengo un nuevo sitio web asp.net mvc 3 con el motor de afeitar y estoy tratando de preparar el sitio para la producción donde no puedo tener la pantalla amarilla de la muerte. En webforms esto es fácil, solo active customErrors en el archivo web.config y listo.Página de error personalizado en asp.net mvc 3

Para probar I fijó un método controlador de prueba como tal:

public ActionResult Ex() 
    { 
     throw new InvalidOperationException(); 
    } 

que esperaba la vista de error (/Views/Shared/Error.cshtml) que se mostrará en su lugar me da la pantalla amarilla de la muerte con el mensaje "La operación no es válida debido al estado actual del objeto". Intenté activar customErrors en el archivo web.config y todavía no funciona. Estoy llamando al método RegisterGlobalFilters en Global.asax pero también he intentado aplicar el atributo HandleError directamente.

Gracias por su ayuda.

+0

Se espera que el mensaje que está viendo con CustomErrors activado, ¿qué pasó con CustomErrors desactivado? –

Respuesta

12

Active los errores personalizados y enrutelos a un controlador de errores.

<customErrors mode="On" defaultRedirect="~/Error/Unknown"> 
    <error statusCode="403" redirect="~/Error/NoAccess" /> 
    <error statusCode="404" redirect="~/Error/NotFound" /> 
</customErrors> 

El controlador necesita las acciones Desconocido, NoAccess y NotFound. Cada uno deberá devolver una vista.