Fondamentalmente:
Usa IncludeErrorDetailPolicyinvece se CustomErrorsnon 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 CustomErrorsnon mi è stato di grande aiuto. Era già impostato su Off, ma ho ancora ricevuto solo un misero an error has occurredmessaggio. 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 CustomErrorsnon aiuta più per questo, ma che PUOI cambiare il 'Dettaglio errore' impostando un diverso IncludeErrorDetailPolicynella configurazione WebApi globale (es. WebApiConfig.cs):
GlobalConfiguration.Configuration.IncludeErrorDetailPolicy
= IncludeErrorDetailPolicy.Always;
Fortunatamente, spiega anche come configurarlo in modo che webapi (2) ascolti le tue CustomErrorsimpostazioni. 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).