我有一个 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/