Básicamente:
Use IncludeErrorDetailPolicy
en su lugar si CustomErrors
no lo resuelve por usted (por ejemplo, si su pila ASP.NET es> 2012):
GlobalConfiguration.Configuration.IncludeErrorDetailPolicy
= IncludeErrorDetailPolicy.Always;
Nota: Tenga cuidado al devolver información detallada del error puede revelar información confidencial a los 'hackers'. Vea el comentario de Simon sobre esta respuesta a continuación.
TL; versión DR
Para mí CustomErrors
realmente no ayudó. Ya estaba configurado en Off
, pero todavía recibí un an error has occurred
mensaje miserable . Supongo que la respuesta aceptada es de hace 3 años, que es mucho tiempo en la web hoy en día. Estoy usando Web API 2 y ASP.NET 5 (MVC 5) y Microsoft se ha alejado de una estrategia solo de IIS, mientras queCustomErrors
es viejo skool IIS;).
De todos modos, tuve un problema en la producción que no tenía localmente. Y luego descubrí que no podía ver los errores en la pestaña Red de Chrome como podía en mi máquina de desarrollo. Al final logré resolverlo instalando Chrome en mi servidor de producción y luego buscando la aplicación allí en el servidor (por ejemplo, en 'localhost'). Luego aparecieron errores más detallados con trazas de pila y todo.
Solo después encontré este artículo de Jimmy Bogard (Nota: ¡Jimmy es el señor AutoMapper! ). Lo curioso es que su artículo también es de 2012, pero en él ya explica que CustomErrors
ya no ayuda para esto, pero que PUEDE cambiar el 'Detalle de error' configurando una configuración diferente IncludeErrorDetailPolicy
de WebApi global (por ejemplo WebApiConfig.cs
):
GlobalConfiguration.Configuration.IncludeErrorDetailPolicy
= IncludeErrorDetailPolicy.Always;
Afortunadamente, también explica cómo configurarlo para que webapi (2) escuche tu CustomErrors
configuración. Es un enfoque bastante sensato, y le permite volver a 2012: P.
Nota: El valor predeterminado es 'LocalOnly', lo que explica por qué pude resolver el problema de la manera que describí, antes de encontrar esta publicación. Pero entiendo que no todo el mundo puede simplemente remotamente a la producción y al inicio de un navegador (sé que en su mayoría no podría hasta que decidí hacerme freelance y DevOps).