OData: были найдены несовместимые типы типов. Найден тип «Примитив» вместо ожидаемого «Нет» - PullRequest
0 голосов
/ 30 марта 2020

Я пытаюсь использовать Excel 16.0.11929.20436 Получить данные из других источников: OData Feed. Когда я вхожу в URL, я получаю ошибку ниже. OData: были найдены несовместимые типы типов. Найден тип type 'Primitive' вместо ожидаемого типа 'None'.

Я упомянул проблему в github https://github.com/OData/odata.net/issues/1445 и упомянул «Протокол OData не допускает дублирование имен для top -уровневые элементы в одном и том же пространстве имен «На основе этого решения я исправил дубликаты в моем CSDL, но все еще получал ту же проблему, даже без дубликатов. Ниже сгенерированный CSDL после исправления. Когда я набираю URL в браузере, данные загружаются без ошибок. Только при использовании в MS Excel выдает ошибку. Поэтому я почти уверен, что это связано с некоторыми функциями OData в Excel, но, к сожалению, нет журнала, в котором я мог бы проверить, в чем проблема. К сожалению, команда поддержки клиентов Microsoft не имеет положительного ответа в отношении этой проблемы.

Однако CustomerInfo имеет подэлемент с именем «CustomerCategory», который ссылается на CustomerCategory. Но это не элемент верхнего уровня.

  1. В чем может быть причина того, что эта ошибка по-прежнему возникает? Как это можно проверить? сайт проверки http://validator.odata.org/ также не работает.
  2. Есть ли способ проверить журналы Excel или отладить процесс?

Get data from OData feed in excel

Error message CSDL with no duplicate names

1 Ответ

0 голосов
/ 07 апреля 2020

Я разобрался с решением этой проблемы. Размещение этого ответа с намерением помочь кому-то, у кого возникли проблемы.

Когда вы устанавливаете fiddler, он не будет прослушивать запросы от локального хоста, если ваш сервер также находится на той же машине. Поэтому выполните следующие настройки, чтобы исправить это.

  1. Fiddler -> Rules -> Customize Rules
  2. Добавьте приведенный ниже код в код метода: OnBeforeRequest ( oSession: Session)

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

    измените порт на порт, который у вас есть на любом другом порту для локального сервера

Теперь ваши запросы к локальному серверу будут прослушиваться fiddler.

Если вы отправляете запросы через браузеры, то они будут прослушиваться по умолчанию. Если вы используете URL-адрес OData для Microsoft Excel для отправки запроса: вам нужно добавить ' .fiddler ' в конец hostname .

Пример:

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

Надеюсь, это поможет всем, кто борется с отладкой URL-адресов фида Microsoft OData с помощью fiddler.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...