Rodolfo Colón Ответов: 0

Обновления ссылок на службы C#


Я использую Microsoft Visual Studio 2017, в проекте я вызываю Service reference из веб-службы SAPME, недавно мы сделали патч на SAPME. и теперь сервис не извлекает всю информацию в каждом отдельном объекте.

Я проверил ссылку в SOAP UI, и вот веб-сервис да, он переписывает всю информацию.

Так что сценарий следующий:
В нашей системе разработки мы запустили обновление в системе SAPME, а затем, используя ссылку на службу без обновления, она не восстанавливает всю информацию. Как только я делаю обновление в справочнике службы, оно начинает работать должным образом в нашей среде Developmnet.

Но как только я делаю обновление в справочнике службы, он перестает правильно восстанавливать информацию в качественной среде(Whitout обновление SAPME).

И это происходит в VS.

Тема заключается в том, почему в SOAPUI сервис восстанавливает информацию должным образом, но не тогда, когда я использую этот сервис в проекте. Я проверил отображение и это нормально

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

Однажды разница, которую я вижу на SOAPUI, такова:


<SOAP-ENV:Envelope xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
   <soap-env:body>
      <ns3:findUsersByFiltersResponse xmlns:ns4="mepapi:com:sap:me:reasoncode" xmlns:ns3="mepapi:com:sap:me:user" xmlns:ns5="http://www.sap.com/me/common" xmlns:ns2="http://www.sap.com/me/user">



<SOAP-ENV:Envelope xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
   <soap-env:body>
      <ns4:findUsersByFiltersResponse xmlns:ns5="mepapi:com:sap:me:reasoncode" xmlns:ns4="mepapi:com:sap:me:user" xmlns:ns3="http://www.sap.com/me/common" xmlns:ns2="http://www.sap.com/me/user">


Что я уже пробовал:

используя мыла, чтобы проверить, если веб-сервис получения информации

Hermann Jung

Похоже, что старый клиент игнорирует некоторые поля ответа новой службы. Вы уже проверили отображение. Поэтому единственная причина, которую я вижу, - это порядок элементов данных-от него зависит datacontractserializer. Попробуйте сделать следующее:
Отредактируйте пример службы datacontract:
Добавьте атрибут DataMember-Attribute, если он еще не присутствует.
Установите DataMember(Order = 1) на элементах исходной версии.
Установите DataMember(Order = 2) для членов новой версии.

Если вы уже указали DataMember-Order - не обновляйте порядок исходных членов; вместо этого убедитесь, что новые члены имеют более высокий порядок, чем самый высокий исходный порядок членов.

Я надеюсь, что это решит вашу проблему - удачи.
PS: управление версиями Soap-сервиса-это распространенный сценарий, есть много статей в интернете.


Другая идея:
Diff генерирует код клиента службы до и после обновления. Обратите внимание на имена членов, пространства имен и порядок.

0 Ответов