Генерация клиентского кода с использованием svcutil - PullRequest
1 голос
/ 11 мая 2011

Я пытаюсь сгенерировать код прокси клиента с помощью инструмента 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: определения [@targetNamespace = 'http://www.starstandards.org/webservices / 2005/10 / transport / bindings'] / wsdl: portType [@ name = 'starTransportPortTypes']

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

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

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

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

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

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

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

Есть идеи?

1 Ответ

0 голосов
/ 12 мая 2011

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

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

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

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

...