【发布时间】:2011-11-22 20:25:34
【问题描述】:
我正在研究生成符合以下 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 的发布者执行某些编辑或至少发布第二个版本以用于我的目的。
非常感谢,
最大
维也纳,
奥地利
【问题讨论】:
标签: wcf wsdl wsdl.exe svcutil.exe