OData 连接服务如何处理类型

问题描述

也许我遗漏了一些东西,但我不断收到对象反序列化的异常。我认为这是因为 @odata.context@odata.type

不同

例如,如果我执行 GET ~/MediaFiles 这是响应:

{
  "@odata.context": "https://MyServer/odata/v1/$Metadata#MediaFiles/ServerNamespace.Media.MediaFile","value": [
    {
      "@odata.type": "#ServerNamespace.Media.MediaFile",....
    }
  ]
}

但是如果我查看元数据:

<EntitySet Name="MediaFiles" EntityType="ServerNamespace.Media.FileItemInfo"/>

错误发生在 DataServiceQuery.Take(10) 上,给出异常

InvalidOperationException: 
The response payload is a not a valid response payload. Please make sure that the top level element is a valid Atom or JSON element or belongs to 'http://docs.oasis-open.org/odata/ns/data' namespace.

是的,我检查了正文是否是有效的 JSON 以及标题是否正确。

如您所见,MetaData 描述了 FileItemInfo 的类型,而响应 JSON 的类型为 MediaFile

在有人问之前,不,我无法更改或调试服务器代码,因为这是第三方。

在这种情况下,我使用 OData 连接服务生成客户端代码

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)