如何看待OData 3.0响应,WCF检测到错误

时间:2016-05-10 13:11:13

标签: c# wcf odata

我正在使用WCF实现.net OData客户端。这使用OData版本3.该服务由供应商实现。保存具有缺少属性的对象时,服务器将返回错误。但错误响应的格式不正确(Specification)。因此,DataServiceContext.SaveChanges(...)方法始终抛出:

  

System.Net WebException:"远程服务器返回错误:(400)错误请求。"

有了这个例外,我没有任何可能得到错误的原因 - 没有设置InnerException。

这样的错误响应如何,以便WCF DataServiceContext.SaveChanges(...)检测到错误,我可以获得所需的信息?

提前致谢。

修改

我使用fiddler来更改服务器的响应。有了这个,我试图找到正确的格式化响应。这是我在重新阅读规范并考虑注释后尝试的最后一个版本:

HTTP/1.1 40 Bad Request
Cache-Control: private
Content-Type: application/atom+xml;type=feed
Date: Wed, 11 May 2016 08:02:07 GMT
Content-Length: 243
DataServiceVersion: 3.0;

<?xml version="1.0" encoding="utf-8"?>
<m:error xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata">
  <m:code />
  <m:message xml:lang="en-US">
    Resource not found for the segment 'Productss'.
  </m:message>
</m:error>

可悲的是,它仍然无法正常工作。

1 个答案:

答案 0 :(得分:1)

您获得的错误不是因为客户端无法阅读回复,而是Exception告诉您服务器没有&#34;喜欢&#34; 34;您发送给它的请求。

400 Bad Request 通常用于通知客户端它发送给服务器的请求格式错误。

一旦您以正确的结构将请求发送到服务器,错误就会消失。

希望它有所帮助!