svcutil.exe генерирует ошибки, в то время как wsdl.exe работает без

Я пытаюсь создать веб-сервис, соответствующий WSDL, который находится по адресу:

http://assets.cdn.gamigo.com/xml/connection-service/1.0.10/account.wsdl

Когда я запускаю с svcutil.exe, как это:

svcutil.exe /language:C# /out:GamigoServices.cs http://assets.cdn.gamigo.com/xml/connection-service/1.0.10/account.wsdl

Я получаю эти ошибки:

Error: Cannot import wsdl:binding
Detail: The given key was not present in the dictionary.
XPath to Error Source: //wsdl:definitions[@targetNamespace='http://connection.ga
mes.gamigo.com/v_1_0']/wsdl:binding[@name='DefaultAccountServiceServiceSoapBindi
ng']


Error: Cannot import wsdl:port
Detail: There was an error importing a wsdl:binding that the wsdl:port is depend
ent on.
XPath to wsdl:binding: //wsdl:definitions[@targetNamespace='http://connection.ga
mes.gamigo.com/v_1_0']/wsdl:binding[@name='DefaultAccountServiceServiceSoapBindi
ng']
XPath to Error Source: //wsdl:definitions[@targetNamespace='http://connection.ga
mes.gamigo.com/v_1_0']/wsdl:service[@name='AccountService']/wsdl:port[@name='Acc
ountServicePort']

Я также попробовал инструмент Wscf:Blue, который выдает мне те же ошибки (это плагин WCF VS, который, возможно, сделает для меня намного больше, когда я пройду этот шаг).

С другой стороны, если я использую wsdl.exe (который я не хочу, потому что я хочу использовать WCF, и, насколько я понимаю, мне нужно использовать svcutil.exe для WCF, но я только что попробовал wsdl.exe в моих попытках сузить источник проблем) вот так:

wsdl.exe  http://assets.cdn.gamigo.com/xml/connection-service/1.0.10/account.wsdl /serverInterface

нет ошибок

Я пробовал все виды вещей с локальными копиями WSDL (и типами.xsd, на которые он ссылается), комментируя разделы и т. Д., Чтобы сузить проблему. Однако это действительно сводится к тому, что именно относится к сообщению об ошибке, к определению этой привязки. Я также погуглил, но несколько ссылок на такого рода ошибки не помогают вообще. Кроме того, меня особенно озадачивает тот факт, что wsdl.exe кажется вполне подходящим для этого WSDL. Я также использовал http://xmethods.net/ve2/WSDLAnalyzer.po# для проверки WSDL, ошибок не было.

Итак, теперь я нахожусь в точке, где я действительно не знаю, как поступить. Поскольку весь вопрос несколько критичен ко времени - к следующей неделе я действительно должен начать с реализации - я мог бы в конечном итоге использовать код, сгенерированный wsdl.exe и перейти на более старую технологию, устаревшую MS, но по нескольким (очевидным) причинам Я бы предпочел не идти этим путем. Так что если у кого-то есть идеи, как заставить svcutil.exe работать с этим, я был бы благодарен. Я мог бы добавить, что, хотя я не могу изменить определение, я мог бы убедить издателя этого WSDL выполнить определенные изменения или, по крайней мере, опубликовать вторую версию для моих целей.

Большое спасибо,

Максимум

Вена,

Австрия

2 ответа

Шаг 1. Смотрите на свой файл WSDL

шаг 2. убедитесь, что wsdl:portType "выровнен" с wsdl:binding (т. е. все операции определяются соответствующим образом в portType и binding).

шаг 3. Спасибо за лучший совет, когда-либо имевший место при работе с ошибками svcUtil, такими как "указанный ключ отсутствует в словаре":-)

Svcutil.exe используется для службы WCF. Если это веб-сервис wsdl.exe будет работать нормально. Я думаю, что вы используете svcutil.exe для веб-службы, поэтому он выдает ошибку.

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