目前,我正在为 Java B2B Web 服务构建客户端,我想我已经确定了我们已经有很长一段时间的问题的原因。不幸的是,我无法发布 WSDL。
显然,我的自动生成的代理代码(通过 wsdl.exe:由于 WCF 不支持密码摘要而必须使用 WSE 3.0)无法处理具有多个具有相同复杂返回类型的 Web 方法的 Web 服务的 WSDL。
举个例子 - 一个定义以下方法的网络服务:
Public ComplexTypeX Blah();
Public ComplexTypeX Blue();
Public ComplexTypeX Foo();
Public ComplexTypeY Bar();
在我的 Reference.cs 文件中,如果我注释掉所有调用 Blah()、Blue() 或 Foo() 中任意两个的代码,那么剩下的未注释的方法可以调用没有问题。但是,如果我有多个未注释掉的这三种方法中的一种(例如 Blah() 和 Foo()),那么在实例化Web 服务客户端代码时会收到以下错误消息:
“方法Blah不能反映。” “命名空间‘ http://some.url ’中的 XML 元素‘ComplexTypeX’引用了一个方法和一个类型。使用 WebMethodAttribute 更改方法的消息名称或使用 XmlRootAttribute 更改类型的根元素。”
现在,绝对没有将ComplexTypeX
方法定义为 Web 服务的一部分,所以我只能假设 .NET(或至少 wsdl.exe)不允许您使用返回复杂(用户定义)的 Web 服务跨多个方法的相同类型的类型......对吗?