asp.net - 非开发环境下Web API方法返回的错误信息被忽略

标签 asp.net iis asp.net-web-api

我有一个 Web API Controller POST 方法,该方法在本地和测试服务器上表现良好。如果一切顺利,它会返回:

new HttpResponseMessage( HttpStatusCode.Created )

如果出现问题,它会返回:

new HttpResponseMessage<IEnumerable<string>>( usefulMessages, HttpStatusCode.BadRequest );

问题是,当我向测试服务器发出导致错误的请求时,我收到了错误的请求代码,但我从未看到这些消息。如果我向本地计算机发出完全相同的请求,我确实会看到这些消息。以下输出来 self 自己的工具:

向我的本地计算机发送请求,我得到:

Status code: 400 (BadRequest)
Response data: ["Error message one", "Error message two"]

向测试服务器发送请求,我得到:

Status code: 400 (BadRequest)
Response data: Bad Request

正在运行的代码完全相同。数据库是一样的。除了服务请求的服务器之外,一切都是一样的。我什至有代码通过电子邮件向自己发送错误消息,这样我就知道服务器正在生成正确的错误消息并且行为正确。这可能是 IIS 的事情(就像 Web API 的 customErrors = RemoteOnly 的等效项)?响应数据中不仅省略了错误消息,还发明了短语“错误请求”来代替。

有什么想法吗?谢谢。

最佳答案

看看this MSDN post在 HttpConfiguration.InincludesErrorDetailPolicy 上:

在您的 Global.asax 中:

var config = GlobalConfiguration.Configuration;
config.IncludeErrorDetailPolicy = IncludeErrorDetailPolicy.Always;

我已使用此配置属性来强制错误消息包含详细信息。

关于asp.net - 非开发环境下Web API方法返回的错误信息被忽略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10246942/

相关文章:

asp.net - 不同路径的 Owin AuthenticationMode Active 和 Passive

c# - Google 和 Facebook 如何先于其他用户向某些用户发布功能?

c# - 如何判断 IIS 何时在 ASP.NET 中应用 "Default Page"设置 (C#)

c# - Linq to SQL 通用存储库模式更新问题

asp.net - 永远不会调用 ValueProvider

asp.net - 在开发中禁用 ScriptManager 脚本整合?

c# - Javascript 的 Onfocus() 事件不计算文本框值

asp.net - Redis 中的 Azure 缓存/DataCache 样式区域

c# - 访问 Azure 队列存储的 IIS 托管服务

c# - Asp.net Web Api - 验证属性被调用两次