Обновления ссылок на службы 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 генерирует код клиента службы до и после обновления. Обратите внимание на имена членов, пространства имен и порядок.