Проблема с веб-службой в C #: XmlChoiceIdentifierATtribute недопустим в элементах - PullRequest
3 голосов
/ 31 мая 2011

Существует веб-служба WSDL , которая находится вне моего контроля, с которой у меня возникают проблемы;Я могу взаимодействовать с этим сервисом, используя soapUI и используя Add Service Reference -> advanced -> Add Web Reference без проблем.

Однако, когда я пытаюсь поговорить с ним, используя стандартный AddПри использовании метода «Ссылка на службу» (добавление ссылки на службу, подключение с использованием сгенерированного кода из файла wsdl.exe) я получаю следующую ошибку:

Атрибут XmlSerializer System.Xml.Serialization.XmlChoiceIdentifierAttribute недопустим в элементах.Только если атрибут IsWrapped имеет значение true, поддерживаются только атрибуты XmlElement, XmlArray, XmlArrayItem, XmlAnyAttribute и XmlAnyElement.

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

Сведения об исключении: System.InvalidOperationException: атрибут XmlSerializer System.Xml.Serialization.XmlChoiceIdentifierAttribute недопустим в элементах.Когда IsWrapped имеет значение true, поддерживаются только атрибуты XmlElement, XmlArray, XmlArrayItem, XmlAnyAttribute и XmlAnyElement.

Я читал кое-что о том, что между Java и .NET существует некоторая несовместимость с SOAP, но поискать можнопрактически не найти никого, кто имеет эту проблему, заставляя меня думать, что я, должно быть, делаю что-то не так?

1 Ответ

1 голос
/ 01 июня 2011

Происходит следующее: DataContractSerializer (по умолчанию для WCF) не может обработать схему (это типично в сценариях, отличных от WCF-WCF), поэтому он «отступает» и генерирует прокси, который использует XmlSerializer.Возможно, что «резервный» механизм генерации прокси для использования с XmlSerializer не генерирует его способом, совместимым с подходом direct-to-XmlSerializer, используемым ссылкой Add Web.

КогдаВы идете в «Advanced-> Add Web Reference», вы вручную указываете Visual Studio использовать механизм, который напрямую генерирует прокси, которые используют XmlSerializer вместо использования механизма отката.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...