我正在使用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>
可悲的是,它仍然无法正常工作。
答案 0 :(得分:1)
您获得的错误不是因为客户端无法阅读回复,而是Exception
告诉您服务器没有&#34;喜欢&#34; 34;您发送给它的请求。
400 Bad Request 通常用于通知客户端它发送给服务器的请求格式错误。
一旦您以正确的结构将请求发送到服务器,错误就会消失。
希望它有所帮助!