带有minoccurs的WSDL =" 0",未发送数据

时间:2015-01-23 09:38:25

标签: java c# wcf wsdl svcutil.exe

我们有两项服务。

一个用Java写成并托管在glassfish中, 另一个在WCF service library中写为C#并在IIS中托管。

当我想与Java service进行通信时,我使用wsdl,通过svcutil生成代理,并希望发送数据。

wsdl中指定了一些枚举值,其中设置了minoccurs="0"

如果我使用包含此类枚举的对象调用该代理上的方法,则不会发送它们。

我按照How to: configure network tracing中的描述开启了跟踪,并按Configuring tracing

中所述转换了所有跟踪

所以我看到信封,枚举没有价值。甚至没有设置属性,这部分完全缺失。

我可以使用svcutil在代理生成中以某种方式处理此问题吗? 如果从minoccurs中删除wsdl,则一切正常。

我已检查生成的代理,并且没有看到有关生成的类/枚举元素的任何差异。

1 个答案:

答案 0 :(得分:1)

如果您的java服务的WSDL是SVCUTIL生成基于XmlSerializer的合同,那么您必须确保在发送数据之前在合同对象上设置正确的字段。

在这种情况下,您应该在名为Specified的合约上有另一个布尔字段/属性,您需要将其设置为true以告诉XmlSerializer包含非空值。