3

我正在研究生成符合以下 WSDL 的 Web 服务:

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 的本地副本(以及它引用的 types.xsd)、注释掉部分等来缩小问题范围。但是,它实际上归结为错误消息所指的确切内容,即该绑定的定义。我也用谷歌搜索过,但对这种错误的少数引用根本没有帮助。此外,我对 wsdl.exe 似乎与该 WSDL 完美匹配这一事实感到特别困惑。我还使用 http://xmethods.net/ve2/WSDLAnalyzer.po#来验证 WSDL,没有显示错误。

所以,现在我真的不知道如何进行。由于整个问题有点时间紧迫——到下周我应该真正开始实施——我最终可能会使用 wsdl.exe 生成的代码并使用被 MS 淘汰的旧技术,但有几个(明显的)原因我宁愿不走那条路。因此,如果有人知道如何使 svcutil.exe 使用它,我将不胜感激。我可能会补充一点,虽然我无法修改定义,但我可能能够说服该 WSDL 的发布者执行某些编辑或至少发布第二个版本以用于我的目的。

非常感谢,

最大限度

维也纳,

奥地利

4

2 回答 2

2

步骤1。盯着你的 WSDL 文件

第2步。确保 wsdl:portType “与” wsdl:binding “对齐”(即所有操作都在 portType 和 binding 下以相应的方式定义)。

第三步。感谢我在处理 svcUtil 错误(例如“字典中不存在给定键”)时提供的最佳建议 :-)

于 2017-07-27T21:20:03.833 回答
-2

Svcutil.exe 用于 WCF 服务。如果它是一个 Web 服务 wsdl.exe 可以正常工作。我认为您正在将 svcutil.exe 用于 Web 服务,因此它给出了错误。

于 2011-09-22T13:33:45.133 回答