SVCUTIL.exe не работает или это WSDL поставщика? - PullRequest
1 голос
/ 11 июля 2011

Я пытаюсь использовать SVCUTIL из SDK для генерации общих типов в нескольких веб-сервисах.Когда я пытаюсь сгенерировать код, я получаю ошибки (показанные внизу) - они предполагают, что WSDL сломан.Однако если я импортирую сервис в ServiceReferences, Visual Studio не будет жаловаться.SVCUTIL не работает?

WSDL являются открытыми и являются:

http://test.wlr3.net/empws/services/WLR3AssuranceServices?wsdl
http://test.wlr3.net/empws/services/WLR3BillingServices?wsdl
http://test.wlr3.net/empws/services/WLR3DialogueServices?wsdl
http://test.wlr3.net/empws/services/WLR3FulfillmentServices?wsdl
http://test.wlr3.net/empws/services/WLR3InventoryServices?wsdl
http://test.wlr3.net/empws/services/WLR3InventoryOrderServices?wsdl
http://test.wlr3.net/empws/services/WLR3InventoryTroubleReportServices?wsdl
http://test.wlr3.net/empws/services/WLR3InventoryWorkItemServices?wsdl
http://test.wlr3.net/empws/services/WLR3IssueServices?wsdl
http://test.wlr3.net/empws/services/WLR3ReportingServices?wsdl
http://test.wlr3.net/empws/services/WLR3SecurityServices?wsdl

Если вы посмотрите этивы увидите много общих типов и несколько пространств имен.Я попытался отправить их в SVCUTIL для генерации кода, но ему не нравятся FulfillmentServices и InventoryServices:

 Error: Cannot import wsdl:portType
Detail: An exception was thrown while running a WSDL import extension: System.ServiceModel.Description.XmlSerializerMessageContractImporter
Error: Cannot import invalid schemas. Compilation on the XmlSchemaSet failed.
XPath to Error Source: //wsdl:definitions[@targetNamespace='http://imperatives.co.uk/V20']/wsdl:portType[@name='WLR3FulfilmentServices']

Error: Cannot import wsdl:binding
Detail: There was an error importing a wsdl:portType that the wsdl:binding is dependent on.
XPath to wsdl:portType: //wsdl:definitions[@targetNamespace='http://imperatives.co.uk/V20']/wsdl:portType[@name='WLR3FulfilmentServices']
XPath to Error Source: //wsdl:definitions[@targetNamespace='http://imperatives.co.uk/V20']/wsdl:binding[@name='WLR3FulfillmentServicesHttpBinding']

Error: Cannot import wsdl:port
Detail: There was an error importing a wsdl:binding that the wsdl:port is dependent on.
XPath to wsdl:binding: //wsdl:definitions[@targetNamespace='http://imperatives.co.uk/V20']/wsdl:binding[@name='WLR3FulfillmentServicesHttpBinding']
XPath to Error Source: //wsdl:definitions[@targetNamespace='http://imperatives.co.uk/V20']/wsdl:service[@name='WLR3FulfillmentServices']/wsdl:port[@name='WLR3FulfillmentServicesHttpPort']

1 Ответ

1 голос
/ 13 июля 2011

Согласно комментариям к вопросу, существует небольшая разница в двух проблемных WSDL. Я сравнил их со старыми версиями и обнаружил, что в них есть тип, основанный на виртуальном базовом типе, называемом «Dto».

Это применяется только к двум типам - одному в Службах исполнения и одном в Службах инвентаризации, и они также встречаются в других WSDL, но без базы - файлы WSDL не согласованы.

Так что я могу объяснить SVCUTIL здесь и дать толчок поставщику.

Спасибо Джону Сондерсу за просмотр

...