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