Казалось бы, вы импортировали один и тот же WSDL дважды - или, по крайней мере, некоторые типы, используемые обоими, одинаковы. Возможно, вы сможете устранить неоднозначность между двумя одноименными типами, не импортируя оба пространства имен веб-ссылки или используя псевдоним пространства имен.
Не могли бы вы опубликовать фактический фрагмент кода, а также указать URL-адреса, которые вы импортировали с помощью "Добавить веб-ссылку"? Кроме того, какую версию Visual Studio вы используете и на какую версию .Net Framework вы нацеливаетесь?
РЕДАКТИРОВАТЬ - продолжение на основе информации, предоставленной Питером в комментарии
Я изучил оба URL-адреса, которые вы разместили, и просто хотел предоставить небольшую справочную информацию. На самом деле причина, по которой вы впервые увидели ошибку, заключается в том, что оба импорта WSDL указывают на использование одного и того же типа, а именно MessageHeader . Изучение вершины каждого файла WSDL:
http://webservices.sabre.com/wsdl/sabreXML1.0.00/usg/SessionCreateRQ.wsdl
<definitions targetNamespace="https://webservices.sabre.com/websvc">
<types>
<xsd:schema>
<xsd:import namespace="http://www.opentravel.org/OTA/2002/11" schemaLocation="SessionCreateRQRS.xsd"/>
<xsd:import namespace="http://www.ebxml.org/namespaces/messageHeader" schemaLocation="msg-header-2_0.xsd"/>
...
http://webservices.sabre.com/wsdl/sabreXML1.0.00/tpf/OTA_AirAvailLLS1.1.1RQ.wsdl
<definitions targetNamespace="https://webservices.sabre.com/websvc">
<types>
<xsd:schema>
<xsd:import namespace="http://webservices.sabre.com/sabreXML/2003/07" schemaLocation="OTA_AirAvailLLS1.1.1RQRS.xsd"/>
<xsd:import namespace="http://www.ebxml.org/namespaces/messageHeader" schemaLocation="msg-header-2_0.xsd"/>
...
Последняя строка в каждом файле WSDL показывает причину конфликта имен типов - один и тот же файл XSD импортируется каждым файлом WSDL, очевидно, потому что оба используют один и тот же тип. Когда вы создаете веб-ссылку на каждый файл WSDL, Visual Studio проверяет WSDL и генерирует класс, который соответствует импортированной схеме msg-header-2_0.xsd .
К сожалению, Visual Studio не может сказать, что схема в каждой отдельной ссылке WSDSL действительно имеет один и тот же тип, и поэтому она должным образом импортирует каждый и генерирует отдельный класс для каждого. Хотя каждый из сгенерированных классов имеет одно и то же имя, каждый определяется в своем собственном уникальном пространстве имен, которое соотносится с каждым из файлов WSDL.
Итак, вот почему решение, принятое вами для вашего вопроса, работает - либо указав полное имя one типов работ, либо используя псевдоним для one типов внутри один определенного пространства имен.
Другим решением было бы исправить две веб-ссылки для совместного использования одного типа MessageHeader. Это можно сделать вручную, однако вам придется повторять ручное редактирование каждый раз, когда вы обновляете ссылку на веб-службу, поэтому я бы не рекомендовал это делать. Кроме того, вероятно, лучше использовать правильный тип MessageHeader , определенный для каждой службы, несмотря на тот факт, что они одинаковы. Итак, я бы создал два с использованием псевдонимов , если вы предполагаете, что собираетесь вызывать обе службы из одного и того же исходного файла:
using MessageHeader1 = WebApplication3.com.sabre.webservices1.MessageHeader;
using MessageHeader2 = WebApplication3.com.sabre.webservices2.MessageHeader;
Я бы использовал MessageHeader1 с любой службой, на которую вы ссылались в пространстве имен WebApplication3.com.sabre.webservices1 , а также MessageHeader2 с другой.
Удачи!