wsdl.exe错误:无法从命名空间'...'导入绑定'...'

Gle*_*oss 32 .net soap wsdl

在我创建的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服务界面.


mo.*_*mo. 8

有时你必须改变你的代码.消息部分名称不应该相同;)

<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>
Run Code Online (Sandbox Code Playgroud)

对此:

<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>
Run Code Online (Sandbox Code Playgroud)


Bar*_*zKP 5

在我的情况下,问题是不同的,这里有很好的描述:

每当部件的名称是“参数”时,.Net 假定使用 doc/lit/wrapped 并相应地生成代理。如果即使使用了“参数”这个词,wsdl 也不是 doc/lit/wrapped(如上一个例子),.Net 可能会给我们一些错误。哪个错误?你猜对了:“这些成员可能不是派生的”。现在我们可以理解错误的含义:.Net 尝试省略根元素,因为它认为使用了 doc/lit/wrapped。然而,这个元素不能被删除,因为它不是虚拟的——它应该由用户从几个派生类型中主动选择。

修复如下,对我来说非常有效:

修复它的方法是在文本编辑器中打开 wsdl 并将部件名称从"parameters"更改为"parameters1"。现在 .Net 将知道生成 doc/lit/bare 代理。这意味着一个新的包装类将作为根参数出现在代理中。虽然这可能有点乏味的 api,但这不会对有线格式产生任何影响,并且代理是完全可互操作的。

(我强调)