Fondamentalmente:
Usa IncludeErrorDetailPolicy
invece se CustomErrors
non lo risolve per te (ad esempio se lo stack ASP.NET è> 2012):
GlobalConfiguration.Configuration.IncludeErrorDetailPolicy
= IncludeErrorDetailPolicy.Always;
Nota: fare attenzione a restituire informazioni dettagliate sull'errore in grado di rivelare informazioni sensibili agli "hacker". Vedi il commento di Simon su questa risposta di seguito.
TL; versione DR
Per me CustomErrors
non mi è stato di grande aiuto. Era già impostato su Off
, ma ho ancora ricevuto solo un misero an error has occurred
messaggio. Immagino che la risposta accettata sia di 3 anni fa, che è molto tempo nella parola web al giorno d'oggi. Sto usando Web API 2 e ASP.NET 5 (MVC 5) e Microsoft si è allontanata da una strategia solo IIS, mentre CustomErrors
è vecchio skool IIS;).
Comunque, ho avuto un problema di produzione che non avevo localmente. E poi ho scoperto che non potevo vedere gli errori nella scheda Rete di Chrome come potevo sul mio computer di sviluppo. Alla fine sono riuscito a risolverlo installando Chrome sul mio server di produzione e quindi accedendo all'app lì sul server stesso (ad esempio su "localhost"). Quindi sono comparsi errori più dettagliati con tracce dello stack e tutto il resto.
Solo in seguito ho trovato questo articolo di Jimmy Bogard (Nota: Jimmy è il signor AutoMapper! ). La cosa divertente è che anche il suo articolo è del 2012, ma in esso spiega già che CustomErrors
non aiuta più per questo, ma che PUOI cambiare il 'Dettaglio errore' impostando un diverso IncludeErrorDetailPolicy
nella configurazione WebApi globale (es. WebApiConfig.cs
):
GlobalConfiguration.Configuration.IncludeErrorDetailPolicy
= IncludeErrorDetailPolicy.Always;
Fortunatamente, spiega anche come configurarlo in modo che webapi (2) ascolti le tue CustomErrors
impostazioni. Questo è un approccio abbastanza sensato, e questo ti consente di tornare al 2012: P.
Nota: il valore predefinito è "LocalOnly", il che spiega perché sono stato in grado di risolvere il problema nel modo descritto, prima di trovare questo post. Ma capisco che non tutti possono semplicemente remoto alla produzione e all'avvio di un browser (so che per lo più non potrei fino a quando non ho deciso di diventare freelance E DevOps).