基本上:
IncludeErrorDetailPolicy
如果CustomErrors
不能为您解决问题,请改用它(例如,如果您的ASP.NET堆栈为> 2012):
GlobalConfiguration.Configuration.IncludeErrorDetailPolicy
= IncludeErrorDetailPolicy.Always;
注意:小心返回详细的错误信息会向“黑客”透露敏感信息。请参阅下面的Simon关于此答案的评论。
TL; DR版本
对我来说CustomErrors
并没有真正的帮助。它已经设置为Off
,但是我仍然收到很少的an error has occurred
消息。我想可接受的答案是3年前,这在当今网络上已经是很长一段时间了。我使用的是Web API 2和ASP.NET 5(MVC 5),Microsoft不再使用仅使用IIS的策略,而使用CustomErrors
旧的IIS;)。
无论如何,我在生产上遇到了一个本地没有的问题。然后发现我无法像在开发计算机上那样在Chrome的“网络”标签中看到错误。最后,我设法通过在生产服务器上安装Chrome,然后浏览到服务器本身(例如在“ localhost”上)的应用程序来解决该问题。然后,堆栈跟踪和所有错误出现了更详细的错误。
直到后来,我才从Jimmy Bogard找到这篇文章(注意:Jimmy是AutoMapper先生!)。有趣的是,他的文章也来自2012年,但其中他已经解释CustomErrors
了这不再IncludeErrorDetailPolicy
有用,但是您可以通过在全局WebApi配置中设置不同的值(例如WebApiConfig.cs
)来更改“错误详细信息” :
GlobalConfiguration.Configuration.IncludeErrorDetailPolicy
= IncludeErrorDetailPolicy.Always;
幸运的是,他还解释了如何设置webapi(2)监听您的CustomErrors
设置。这是一个非常明智的方法,它可以让您回到2012:P。
注意:默认值是“ LocalOnly”,这说明了为什么找到这篇文章之前我能够按照我所描述的方式解决问题。但是我了解到,并不是每个人都可以远程生产和启动浏览器(我知道,直到我决定选择自由职业者和DevOps时,我大多数时候才能这样做)。