Как использовать службу OData v3.0 в Visual Studio 2017

Я изо всех сил пытаюсь найти способ просто использовать службу OData v3.0 любым способом из Visual Studio 2017, поэтому я могу использовать клиентскую библиотеку, чтобы помочь разработать мое приложение/службу для использования данных.

Согласно странице Microsoft OData Stack, у них есть все инструменты и поддержка для использования OData v4. .0 обслуживание. Не зная, что на самом деле я имею дело со службой версии 3.0, я следовал этим инструкциям, и, как описано на странице, есть два варианта инструментов для начала работы. Одним из них является генератор клиентского кода, а другим – Подключенная служба OData

После того, как пришлось пройти через некоторые обручи, чтобы даже заставить работать любой из них (см. GitHub Issue за фактически найденную версию генератора клиентского кода, которая действительно работает с VS2017, и попытку обходного пути, чтобы заставить подключенную службу OData работать со службой, требующей аутентификации, я наконец понял, что работаю с OData v3. Ответ 0. Так что эти инструменты не могли помочь.

Теперь это противоречит тому, что на самом деле упоминается на странице торговой площадки OData Connected Service, где говорит «Подключенная служба OData для V1-V4», это не сработало. Если служба OData требует аутентификации, я получаю это диалоговое окно с ошибкой при попытке добавить подключенную службу через расширение:

Ошибка при попытке добавить службу OData, для которой требуется аутентификация с подключенной службой и расширением

Итак, затем я прочитал в проблеме GitHub (не могу ее найти), что потенциальным обходным путем является загрузка XML, возвращаемого при попадании в конечную точку метаданных /$, переименование его в whatever.edmx и попытка использовать это для расширения предоставив file:// URI этому файлу. Это не сработало со следующим диалоговым окном ошибки:

введите здесь описание изображения

Тогда я отказался от этого подхода и попытался вместо этого использовать Генератор клиентского кода, и предоставление файла edmx для этого в конфигурации TT (для решения проблем с аутентификацией, и это не сработало, потому что это был OData v3.0, а не 4.0.

Итак, похоже, для версии 3.0 подход заключается в использовании Add Service Reference, но когда я это делаю, я получаю следующую ошибку:

введите здесь описание изображения

..но этот инструмент не поддерживает v3.0.. так что теперь я понятия не имею, что делать!?

Любая помощь будет принята с благодарностью!


person flyte    schedule 21.03.2018    source источник
comment
У меня была такая же проблема, и я не мог ее решить. stackoverflow.com/questions/48671346/ Похоже, Microsoft не обновляла свои инструменты. Вы можете попробовать мое предложение по этой ссылке.   -  person CRice    schedule 22.03.2018
comment
См. мой ответ для обхода, который, казалось, был путем наименьшего сопротивления.   -  person flyte    schedule 26.03.2018


Ответы (1)


На всякий случай, если кто-то еще наткнется на эту конкретную комбинацию и не сможет продолжить использование службы OData v3.0 с текущим VS2017 (и, в частности, о том, как использовать ее в функции Azure), вот что я сделал, чтобы получить вокруг этого:

  1. Переустановите VS2015 и создайте новый проект библиотеки.
  2. Добавьте новую ссылку на службу и укажите на службу OData версии 3 (или более ранней). если служба требует аутентификации, это диалоговое окно позволит вам ввести учетные данные. Мне было предложено ввести их 2 раза.
  3. Создайте класс/службу/интерфейс, который будет предоставлять все соответствующие таблицы/запросы, которые вы заинтересованы в использовании из этой службы OData.
  4. Сохраните проект и закройте VS2015.
  5. Скопируйте этот проект в свое решение VS2017. В моем случае у меня было решение, содержащее функцию Azure.
  6. Теперь вызовите этот новый проект/библиотеку для получения данных.

Это единственный способ заставить это работать после многих часов устранения неполадок с различными ограничениями и обходными путями текущих версий. Излишне говорить, что я очень разочарован текущим состоянием инструментов + поддержка VS2017 для использования более старых версий OData.

person flyte    schedule 26.03.2018
comment
Необходимость искать старую версию VS очень раздражает, надеюсь, они скоро это исправят. - person CRice; 27.03.2018