在我创建的WSDL上运行wsdl.exe时,出现此错误:
错误:无法从名称空间'SomeNS'导入绑定'SomeBinding'.
- 无法导入操作'someOperation'.
- 这些成员可能不是派生的.
我正在使用文档 - 文字样式,据我所知,我遵守所有规则.
总结一下,我有一个有效的WSDL,但该工具不喜欢它.
我正在寻找的是,如果有人对wsdl.exe工具有很多经验,并且知道一些我不知道的秘密问题.
the*_*hhv 52
我遇到了同样的错误消息.挖了一会儿后,发现除了wsdl文件之外还可以提供xsd文件.因此,除了wsdl命令末尾的.wsdl之外,还包括/导入.xsd文件,如下所示:
wsdl.exe myWebService.wsdl myXsd1.xsd myType1.xsd myXsd2.xsd ...
Wsdl给出了一些警告,但确实创建了一个ok服务界面.
有时你必须改变你的代码.消息部分名称不应该相同;)
<wsdl:message name="AnfrageRisikoAnfrageL">
    <wsdl:part name="parameters" element="his1_0:typeIn"/>
</wsdl:message>
<wsdl:message name="AnfrageRisikoAntwortL">
    <wsdl:part name="parameters" element="his1_0:typeOut"/>
</wsdl:message>
对此:
<wsdl:message name="AnfrageRisikoAnfrageL">
    <wsdl:part name="in" element="his1_0:typeIn"/>
</wsdl:message>
<wsdl:message name="AnfrageRisikoAntwortL">
    <wsdl:part name="out" element="his1_0:typeOut"/>
</wsdl:message>
在我的情况下,问题是不同的,这里有很好的描述:
每当部件的名称是“参数”时,.Net 假定使用 doc/lit/wrapped 并相应地生成代理。如果即使使用了“参数”这个词,wsdl 也不是 doc/lit/wrapped(如上一个例子),.Net 可能会给我们一些错误。哪个错误?你猜对了:“这些成员可能不是派生的”。现在我们可以理解错误的含义:.Net 尝试省略根元素,因为它认为使用了 doc/lit/wrapped。然而,这个元素不能被删除,因为它不是虚拟的——它应该由用户从几个派生类型中主动选择。
修复如下,对我来说非常有效:
修复它的方法是在文本编辑器中打开 wsdl 并将部件名称从"parameters"更改为"parameters1"。现在 .Net 将知道生成 doc/lit/bare 代理。这意味着一个新的包装类将作为根参数出现在代理中。虽然这可能有点乏味的 api,但这不会对有线格式产生任何影响,并且代理是完全可互操作的。
(我强调)
| 归档时间: | 
 | 
| 查看次数: | 31404 次 | 
| 最近记录: |