Генерация клиентского кода с использованием svcutil

Я пытаюсь сгенерировать код прокси клиента с помощью инструмента svcutil.exe. И это бросает следующую ошибку.

Я использую следующую команду.

svcutil /namespace:http://www.starstandard.org/STAR/5,* /out:STARContract.cs / noConfig SendOrderOrder.wsdl SendOrderOrderType.xsd

--------------------Выход ----------------------

Ошибка: при проверке некоторых схем XML, сгенерированных во время экспорта, произошла ошибка: элемент "http://www.starstandard.org/STAR/5:SendOrder" не объявлен.

Ошибка: невозможно импортировать wsdl:portType. Подробно: Возникла исключительная ситуация при выполнении расширения импорта WSDL: System.ServiceModel.Descripti on.XmlSerializerMessageContractImporter Ошибка: элемент "http://www.starstandard.org/STAR/5:SendOrder" отсутствует. XPath to Error Источник: //wsdl:definitions[@targetNamespace='http://www.starstandards.org/webservices /2005/10/transport/bindings']/wsdl:portType[@name='starTransportPortTypes']

Ошибка: Невозможно импортировать wsdl:binding. Подробно: Произошла ошибка при импорте wsdl:portType, от которой зависит wsdl:binding. XPath к wsdl:portType: //wsdl:definitions[@targetNamespace='http://www.starstandards.org/webservice s/2005/10/transport/bindings']/wsdl:portType[@name='starTransportPortTypes'] XPath to Error Источник: //wsdl:definitions[@targetNamespace='http://www.starstandards.org/webservices /2005/10/transport/bindings']/wsdl:binding[@name='starTransport']

Ошибка: Невозможно импортировать wsdl: порт. Подробно: Произошла ошибка при импорте привязки wsdl:, от которой зависит порт wsdl:. XPath для wsdl:binding: //wsdl:definitions[@targetNamespace='http://www.starstandards.org/webservices /2005/10/transport/bindings']/wsdl:binding[@name='starTransport'] XPath Ошибка Источник: //wsdl:definitions[@targetNamespace='http://www.starstandards.org/webservices /2005/10/transport/bindings']/wsdl:service[@name='SendOrderWebService']/wsdl: порт [@ имя ='SendOrderStarTransport']

Генерация файлов... Предупреждение: код не был создан. Если вы пытались сгенерировать клиента, это может быть связано с тем, что документы метаданных не содержали никаких действительных контрактов или услуг, или потому что все контракты / услуги были обнаружены в / справочных сборках. Убедитесь, что вы передали все документы метаданных в инструмент.

Предупреждение. Если вы хотите создавать контракты данных из схем, обязательно используйте параметр /dataContrac tOnly.

--------- Конец вывода -----------------

Относительные ссылки на файлы выглядят нормально.

Когда я пытаюсь создать тот же код с помощью WSE, он работает нормально и генерирует относительный прокси-класс без каких-либо ошибок. Однако это не работает при использовании svcutil.exe.

Любая идея?

1 ответ

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

Однако, на мой взгляд, аспекты генерации кода инструментов.Net wsdl и xsd давно сломаны. Они не справляются со многими стандартными отраслевыми соглашениями (включая обработку конструкций AttributeGroup, принудительное использование пространств имен для включений, плохую обработку обрабатываемых элементов, и этот список можно продолжить).

Если в ваших файлах WSDL/XSD используются операторы import и / или include, то.Net, вероятно, захлебнется. У меня был ряд случаев, когда такие инструменты, как SOAPUI, правильно обрабатывали WSDL и могли генерировать различные артефакты, но.Net не справлялся.

Некоторые люди имели некоторый успех с инструментом под названием WSCF Blue, но, к сожалению, я обычно выравнивал / приводил в порядок файл WSDL/XSD вручную, пока.Net не справится с этим.

Другие вопросы по тегам