我有一个Web API控制器POST方法,在本地和测试服务器上表现良好.如果一切顺利,那么返回:
new HttpResponseMessage( HttpStatusCode.Created )
如果出现问题,它返回:
new HttpResponseMessage<IEnumerable<string>>( usefulMessages,HttpStatusCode.BadRequest );
问题是,当我向测试服务器发出一个请求,导致错误时,我收到不好的请求代码,但我从来没有看到消息.如果我对本地机器提出完全相同的请求,我会看到消息.以下输出来自我自己的工具:
发送请求到我的本地机器我得到:
Status code: 400 (BadRequest) Response data: ["Error message one","Error message two"]
发送请求到测试服务器我得到:
Status code: 400 (BadRequest) Response data: Bad Request
正在运行的代码是完全一样的.数据库是一样的.除了为服务器请求提供服务之外,一切都是一样的.我甚至有代码给自己发送错误消息,所以我知道服务器正在生成正确的错误消息和行为正确.这可能是一个IIS的事情(像相当于customErrors = RemoteOnly的Web API)?错误消息不仅从响应数据中省略,而且发出短语“错误请求”来代替.
有任何想法吗?谢谢.
解决方法
看看
this MSDN post的HttpConfiguration.IncludesErrorDetailPolicy:
在您的Global.asax中:
var config = GlobalConfiguration.Configuration; config.IncludeErrorDetailPolicy = IncludeErrorDetailPolicy.Always;