Web service interoperability issue

We have a legacy web service implemented in Java which was recently updated to add an additional flavor to some existing transaction. The result was that we needed to consume both the old web method and the new one from different parts of the same application.

If you are trying to call a web service developed in a technology different from that of .NET, there is one thing that you need to keep in mind, especially if you have a very distributed environment with a lot of web services and have different implementations of the same web method. This is an issue that is only encountered with a .NET proxy client when referencing a non-.NET web service and when the web methods differ only by the SOAP action header. Yes, certain technologies other than .NET, allow a web service provider to create a web service with multiple methods with the same wire signature, differing only by the SOAP action header.

This is a valid scenario as often the web service developer would like to share the schema especially in the cases where the web methods differ only by the implementation and primarily meant to be different flavors of the same transaction.

In a wsdl such operations might be defined as follows:-

<wsdl:operation name=”Method1″>
<soap:operation soapAction=”Method1SOAPAction” style=”document”/>
<wsdl:input>
<soap:body use=”literal”/>
</wsdl:input>
<wsdl:output>
<soap:body use=”literal”/>
</wsdl:output>
</wsdl:operation>
<wsdl:operation name=”Method2″>
<soap:operation soapAction=”Method2SOAPAction” style=”document”/>
<wsdl:input>
<soap:body use=”literal”/>
</wsdl:input>
<wsdl:output>
<soap:body use=”literal”/>
</wsdl:output>
</wsdl:operation>

The problem here is that when adding a web reference to such a web service, Visual Studio does not throw an error and allows you to create the web reference successfully. However, during runtime it fails while instantiating the proxy and instead throws an exception. The details of such an exception would look as below:-

System.InvalidOperationException: Method TestWebReference.SecondOperationName can not be reflected. —> System.InvalidOperationException: The XML element ‘DuplicateElementName’ from namespace ‘http://tempuri.org/Transactions/schemas’ references a method and a type. Change the method’s message name using WebMethodAttribute or change the type’s root element using the XmlRootAttribute.\r\n   at System.Xml.Serialization.XmlReflectionImporter.ReconcileAccessor(Accessor accessor, NameTable accessors)\r\n   at System.Xml.Serialization.XmlReflectionImporter.ImportMembersMapping(String elementName, String ns, XmlReflectionMember[] members, Boolean hasWrapperElement, Boolean rpc, Boolean openModel, XmlMappingAccess access)\r\n   at System.Web.Services.Protocols.SoapReflector.ImportMembersMapping(XmlReflectionImporter xmlImporter, SoapReflectionImporter soapImporter, Boolean serviceDefaultIsEncoded, Boolean rpc, SoapBindingUse use, SoapParameterStyle paramStyle, String elementName, String elementNamespace, Boolean nsIsDefault, XmlReflectionMember[] members, Boolean validate, Boolean openModel, String key, Boolean writeAccess)\r\n   at System.Web.Services.Protocols.SoapReflector.ReflectMethod(LogicalMethodInfo methodInfo, Boolean client, XmlReflectionImporter xmlImporter, SoapReflectionImporter soapImporter, String defaultNs)\r\n   — End of inner exception stack trace —\r\n   at System.Web.Services.Protocols.SoapReflector.ReflectMethod(LogicalMethodInfo methodInfo, Boolean client, XmlReflectionImporter xmlImporter, SoapReflectionImporter soapImporter, String defaultNs)\r\n   at System.Web.Services.Protocols.SoapClientType.GenerateXmlMappings(Type type, ArrayList soapMethodList, String serviceNamespace, Boolean serviceDefaultIsEncoded, ArrayList mappings)\r\n   at System.Web.Services.Protocols.SoapClientType..ctor(Type type)\r\n   at System.Web.Services.Protocols.SoapHttpClientProtocol..ctor()\r\n   at TestApplication.TestWebReference. TestWebReference..ctor() in C:\\DOTNET\\ASP.NET\\ TestApplication\\Web References\\ TestWebReference\\Reference.cs:line 39\r\n   at TestApplication._Default.Page_Load(Object sender, EventArgs e) in C:\\DOTNET\\ASP.NET\\TestApplication\\Default.aspx.cs:line 16

When using the Web Services Description Language Tool – wsdl.exe to generate a proxy, it actually displays a warning describing the problem. However, it still generates the proxy. I fail to understand what is the purpose of a proxy that cannot be instantiated. Besides, Visual Studio does not even show any warnings. That is very disappointing.

Microsoft (R) Web Services Description Language Utility

[Microsoft (R) .NET Framework, Version 4.0.30319.1]

Copyright (C) Microsoft Corporation. All rights reserved.

Warning: This web reference does not conform to WS-I Basic Profile v1.1.

R2710: The operations in a wsdl:binding in a DESCRIPTION MUST result in wire signatures that are different from one another. An endpoint that supports multiple operations must unambiguously identify the operation being invoked based on the input message that it receives. This is only possible if all the operations specified in the wsdl:binding associated with an endpoint have a unique wire signature.

–  Input message ‘OperationSoapIn’ from namespace ‘http://tempuri.org/Transactions/schemas’ has wire signature ‘http://tempuri.org/Transactions/schemas:DuplicateElementName’.

–  Input message ‘OperationSoapIn’ from namespace ‘http://tempuri.org/Transactions/schemas’ has wire signature ‘http://tempuri.org/Transactions/schemas:DuplicateElementName’.

For more details on the WS-I Basic Profile v1.1, see the specification at http://www.ws-i.org/Profiles/BasicProfile-1.1.html.

Writing file ‘C:\DOTNET\ASP.NET \TestWebReference.cs’.

It seems during instantiation of the proxy, the .NET runtime uses Reflection to create various types presumably for serialization purposes and hence based on the SOAP messages to be emitted on the wire. It seems like this process fails for some reason, presumably due to a name clash, during the processing of the second operation.

What this means, is that even if you specify a WebMethodAttribute or XMLRootAttribute as suggested in the exception message, it still fails during instantiation of the proxy to create two different classes of the same name within the same namespace.

So far the only solution is to change the schema or namespace in the web service so that the SOAP wire signature of the two operations is different. Or a more time consuming one would be to not use a web reference at all.

This problem has also been discussed here:-

29 thoughts on “Web service interoperability issue”

  1. And these figures had a variety of other things in common, besides just
    being women. The College closed in 1968 along with the newly-rebuilt structure was converted into the current Retreat Center, an area contemplation and spiritual reflection. It is
    one of the 3 round churches which can be still in existence inside
    the city.

  2. Одним из самых распространенных вопросов у игроков является: ” Где вводить промокод в 1xbet?”. Ввести промокод 1хбет нуждаться в процессе регистрации.
    Словно только был осуществлен вход для сайт, в правом углу стоит выбрать блок “Регистрация”, http://eatmoscow.ru затем чего откроется внутренняя вкладка, где игроку будет предложен на выбор бонус
    (чтобы ставок на спорт) сиречь фрибет (для любителей зрелище в казино).

  3. продать биткоин в Ногинск

    Онлайн обменник валют SBitcoin.ru – Выгодные курсы обмена валют на сегодня
    Если Вы находитесь в поиске места в интернете, где можно выгодно обменять валюту и не только – представляем Вам SBitcoin.ru!

    Онлайн обменник валют SBitcoin.ru гарантирует своим клиентам выгодные курсы обмена валют на сегодня, выполнения каждого перевода, обмена и конвертации в кратчайшие сроки, круглосуточную поддержку с высококвалифицированными специалистами, надёжную систему защиты и полную анонимность.

    Наш сервис уже не первый год предоставляет выгодный курс обмена валюты и криптовалют, улучшая функционал каждый день, – всё это мы делаем для удобства наших клиентов, ведь именно Вы являетесь для нас главным приоритетом! На сегодняшний день SBitcoin.ru предоставляет возможность конвертации по свыше чем 200 направлений, среди которых представлены: QIWI, Perfect Money, Exmo, Advanced Cash и многие другие. Sbitcoin.ru зарекомендовал себя как надёжный обменник криптовалют. Мы быстро, безопасно и, самое главное – анонимно, поможем Вам обменять или купить Bitcoin, Litecoin, Ethereum и DASH. Валютный резерв обменника полностью удовлетворяет сотни одновременных запросов не вызывая никаких сбоев в системе и конвертация будет произведена в кратчайшие сроки, дополнительные и скрытые комиссии не потревожат Вас – у нас всё честно и прозрачно.

    Мы также предоставляем направления услуг обмена наличных денег: долларов USD, рублей RUB, евро EUR. После того как Вы оставите заявку, заполнив форму на сайте – наш оператор свяжется с Вами, чтобы назначить передачу в любое удобное для Вас время.

    Так же, Sbitcoin.ru предлагает своим клиентам выгодную партнерскую программу, систему бонусов и скидок – для этого Вам просто необходимо зарегистрироваться на сайте. Наши специалисты из технической поддержки оперативно ответят на все интересующие Вас вопросы касательно обменов и помогут решить любые проблемы. На сайте присутствует специальный раздел FAQ, прочитав который Вы сможете узнать больше о реферальной программе и системе бонусов для постоянных клиентов. На сайте Sbitcoin.ru действует партнёрская программа, которая поможет Вам заработать на обмене валют, привлекая новых клиентов и используя наш сервис. Подробнее о ней Вы можете прочитать во вкладке «Партнёрская программа».

    Обменник Sbitcoin.ru всегда идёт в ногу со временем, поэтому мы используем только новое программное обеспечение и уделяем большое внимание нашей системе защиты, чтобы наши клиенты не пострадали от мошенников и других неполадок. За многие годы на рынке SBitcoin заработал репутацию надёжного партнёра благодаря работе с клиентами и высокому качеству услуг обмена валюты и криптовалюты многих направлений, выгодным курсам, низкой комиссии и отсутствием дополнительных выплат. Спасибо, что остаетесь вместе с нами!

    Выгодный обмен валюты с Sbitcoin.ru – быстро, удобно и безопасно!

    купить биткоин в Альметьевск

  4. Сфера сгновенных платежей планирует ввести возможность оплаты поощрений используя QR-код.
    Система Visa уточнила, что при оплате электронных вознаграждений не нужно оплачивать эквайринг.
    Клиент самостоятельно может забить сумму чаевых и оплатить сразу два платежа.
    Один ресторану, а второй непосредственно на счет официанта.
    За декабрь средняя сумма чаевых была 150р.
    Пока оплатить чаевые таким образом имеют возможность держатели карт VISA и Тинькофф.
    Скоро будут подключены Промсвязьбанк, ВТБ и МКБ.
    Аналитики Предсказывают бум на рынке безналичных чаевых в 2020-м.
    Новшество положительно скажется на всех.
    Посетители смогут легко отблагодарить официантов, у которых будет больше путей получить свой бонус, а у банков гораздо больший оборот.
    Данную новость сообщило агентство новостей news 1tourism.ru

  5. Система быстрых платежей планирует ввести возможность оплаты чаевых по QR-коду.
    VISA сообщила, что при оплате электронных вознаграждений не нужно платить эквайринг.
    Клиент сам может забить сумму чаевых и оплатить одновременно два платежа.
    Один ресторану, а второй непосредственно на счет официанта.
    За декабрь средняя сумма чаевых составила 150р.
    Пока отправить чаевые таким образом могут держатели карт VISA и Тинькофф.
    Позже будут подключены Промсвязьбанк, ВТБ и МКБ.
    Эксперты Предсказывают бум на рынке безналичных чаевых в 2020-м.
    Это нововведение положительно скажется для многих.
    Посетители смогут без проблем поощрить официантов, у которых будет больше путей получить свой бонус, а банки будут иметь больше оборота.
    Новость опубликовало агентство новостей https://massvoice.ru
    Делимся мнениями. Это хорошее новшество или нет?

  6. Сфера сгновенных платежей собирается ввести функцию оплаты поощрений по QR-коду.
    Система Visa уточнила, что при оплате электронных вознаграждений не нужно оплачивать эквайринг.
    Клиент сам может забить сумму чаевых и оплатить сразу два платежа.
    Первый на счет ресторана, другой официанту.
    За декабрь средняя сумма чаевых была 150р.
    На данный момент оплатить чаевые таким образом могут владельцы карт VISA и Тинькофф.
    Вскоре будут подключены Промсвязьбанк, ВТБ и МКБ.
    Аналитики Предсказывают бум на рынке безналичных чаевых в 2020м году.
    Новшество положительно скажется для многих.
    Посетители будут иметь возможность легко отблагодарить официантов, у официантов будет больше возможностей получить свой бонус, а у банков гораздо больший оборот.
    Новость поведало агентство Новостное агентство Агентство новостей drugtrust.ru
    Кто что думает? Это достойное нововведение или не нужное?

  7. Система быстрых платежей собирается внедрить функцию оплаты поощрений через QR код.
    Система платежей VISA уточнила, что при оплате электронных вознаграждений не нужно оплачивать эквайринг.
    Клиент сам может забить сумму вознаграждения и провести сразу два платежа.
    Первый на счет ресторана, другой официанту.
    За декабрь средняя сумма чаевых была 150р.
    На сегодня оплатить чаевые этим путем могут владельцы карт VISA и Тинькофф.
    Скоро будут подключены Промсвязьбанк, ВТБ и МКБ.
    Аналитики Предсказывают бум на рынке электронных чаевых в 2020м году.
    Эта новинка хорошо скажется для многих.
    Клиенты смогут без проблем отблагодарить официантов, у официантов будет больше возможностей получить свой бонус, а банки будут иметь больше оборота.
    Эту новость опубликовало агентство Новостное агентство http://outmobe.ru
    Делимся мнениями. Это хорошее новшество или безполезное?

  8. Привет. Если кого-то интересует как можно получить доступ к чьей-то страничке, (например жены…) – можно, закажи взлом у опытных прораммистов. Снизу ссыль, где ты можешь это заказать!

    https://hack-vk.com/telegram – Взлом Телеграм

  9. В минувшем декабре платформа Qiwi Wallet ввела нововведения в систему безопасности и дополнительных проверок трназакций.
    Это повлияло на подавляющую часть пользователей и не в лучшую сторону.
    Очень многие клиенты платформы вынуждены были ждать проведения транзакций до двух дней из-за этих самых проверок СБ.
    На эту проверку уходило 70% платежей в период с декабря по Jan 2020.
    Эта проблема выводит платформу из определения мгновенной системы и ставит под сомнение комфортность ее использования.
    Клиенты начали активно перепрыгивать на другие платежные системы, потому что у многих есть нужда в тысяче и более платежей ежедневно.
    Таким образом система затрудняет нормальную работу клиентов.
    Информация предоставлена информ порталом Петропавловска-Камчатского yuzhno-sakhalinsk24.site
    Ждем окончания реформации системы безопасности, а дальше необходимо делать вывод и принимать действия по поводу данной платежной системы.
    Кто что думает по поводу других платежных систем, делитесь.

Leave a Reply to medina sediqi Cancel reply

Your email address will not be published.

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>