我正在研究生成一个符合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的发布者执行某些编辑或至少为我的目的发布第二个版本。
非常感谢,
最高
维也纳,
奥地利
答案 0 :(得分:1)
步骤1。盯着您的WSDL文件
步骤2。确保wsdl:portType"与"对齐wsdl:binding(即所有操作都在portType和binding下以相应的方式定义)。
步骤3。感谢我在处理svcUtil错误时提供的最佳建议,例如"字典中没有给定的密钥" : - )
答案 1 :(得分:-2)
Svcutil.exe用于WCF服务。如果它的Web服务wsdl.exe将正常工作。我认为您正在使用svcutil.exe进行Web服务,因此它给出了错误。