(转).net调用java生成的ws R2718的问题

from http://blog.csdn.net/cyq1984/article/details/17120097 java工程,使用easywsdl生成发布的WebService的wsdl。并使用SDO的服务数据对象模型,对数据进行描述。 生成的wsdl使用vs2010的visual studio命令提示行,使用wsdl out命令生成C#相关的调用文件,发现后台会抛出如下信息: 警告: 此 Web 引用不符合 WS-I Basic Profile v1.1。 R2718: 说明中的 wsdl:binding 必须与所引用的 wsdl:portType 包含一组相同的 wsdl:operations。 - 来自命名空间“http://www.com/esb/ComponentService1”的 portType“Com ponentService1Interface”上的操作“operation1”没有匹配的绑定。 - 在来自命名空间“http://www.com/esb/ComponentService1”的 portType“C omponentService1Interface”上,没有与来自命名空间“http://www.com/esb/Com ponentService1”的绑定“ComponentService1Soap11”上的操作“operation1”相匹配的 操作。 - 在来自命名空间“http://www.com/esb/ComponentService1”的 portType“C omponentService1Interface”上,没有与来自命名空间“http://www.com/esb/Com ponentService1”的绑定“ComponentService1Soap11”上的操作“operation1”相匹配的 操作。 有关 WS-I Basic Profile v1.1 的更多详细信息,请参阅位于以下位置的规范: http://www.ws-i.org/Profiles/BasicProfile-1.1.html。 错误: 无法从命名空间“http://www.com/esb/ComponentService1”导入绑定“Com ponentService1Soap11”。 - 来自命名空间“http://www.com/esb/ComponentService1”的 portType“Comp onentService1Interface”上的操作“operation1”存在以下语法错误: 此操作没有匹配的 绑定。请检查 Binding 节中的操作、输入和输出的名称是否与 PortType 节中的相应名称 相匹配。 看起来是生成的WSDL不符合ws的某些规范(.Net对这些东西的验证真严格),但是,在java下从没碰到过此类问题。 研究相关规范及网络资源学习,发现问题根本原因在于wsdl文件中的以下“portType”片段的描述: [html] view plain copy 与后续的“binding”部分的描述: [html] view plain copy 两者的“input”与“output”的相关内容,name属性不一致(所谓不一致,即前者有name属性值,后者没有)。 试过之后,发现有两种解决方案: 1、去掉前者的input与output的name属性值。 2、在后者的input与output中添加与前者相同的name属性值。 即调整后的片段为: [html] view plain copy 或 [html] view plain copy 总之,就是需要两者的input与output的属性保持完全的一致。
posted @ 2016-08-10 18:41  云淡风轻~  阅读(317)  评论(0编辑  收藏  举报