【问题标题】:OData: Incompatible type kinds were found. Found type kind 'Primitive' instead of the expected kind 'None'OData:发现不兼容的类型种类。找到类型类型“原始”而不是预期类型“无”
【发布时间】:2020-04-07 12:11:04
【问题描述】:

我正在尝试使用 Excel 16.0.11929.20436 从其他来源获取数据:OData Feed。当我输入网址时,我收到以下错误。 OData:发现不兼容的类型种类。找到类型类型“原始”而不是预期类型“无”。

我在 github https://github.com/OData/odata.net/issues/1445 中提到了这个问题,它提到了“OData 协议不允许同一命名空间中的顶级元素的重复名称” 基于该解决方案,我修复了我的 CSDL 中的重复项,但即使没有重复项,仍然会遇到相同的问题。下面是修复后生成的 CSDL。当我在浏览器中输入 url 时,加载数据时没有任何错误。只有在 MS Excel 中使用时才会出现错误。因此,我很确定这必须与某些 Excel OData 功能有关,但不幸的是,没有日志可以检查问题所在。不幸的是,微软客户支持团队对此问题没有正面回应。

但是,CustomerInfo 有一个名为“CustomerCategory”的子元素,它引用了 CustomerCategory。但这不是顶级元素。

  1. 现在仍然出现同样错误的原因是什么?如何验证?验证站点 http://validator.odata.org/ 也已关闭。
  2. 有没有办法检查excel日志或调试进程?

【问题讨论】:

    标签: odata


    【解决方案1】:

    我想出了这个问题的解决方案。发布此答案的目的是帮助遇到麻烦的人。

    当您安装 fiddler 时,如果您的服务器也在同一台机器上,它不会监听来自本地主机的请求。因此,请执行以下配置以修复它。

    1. 提琴手 -> 规则 -> 自定义规则
    2. 在方法代码中添加如下代码:OnBeforeRequest(oSession: Session)

      if (oSession.HostnameIs("machine_name")) { oSession.host = "127.0.0.1:8080"; }

      将端口更改为您拥有本地主机服务器的任何其他端口的端口

    现在您对本地服务器的请求将被 fiddler 监听。

    如果您通过浏览器发送请求,则默认情况下会监听这些请求。 如果您使用 Microsoft Excel OData 提要 url 发送请求:那么您必须在 hostname 的末尾附加“.fiddler”。

    例子:

    i. http://localhost.fiddler:8080/contxt_root/ProjectionName.svc/EntitySetName?$format=json 
    ii. https://your_hose.fiddler:port/context_root/ProjectionName.svc/EntitySetName?$format=json
    

    希望这对使用 fiddler 调试 Microsoft OData 提要 url 的人有所帮助。

    【讨论】:

      猜你喜欢
      • 2018-08-07
      • 1970-01-01
      • 2013-02-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多