我们有两项服务。
一个用Java
写成并托管在glassfish
中,
另一个在WCF service library
中写为C#
并在IIS
中托管。
当我想与Java service
进行通信时,我使用wsdl
,通过svcutil
生成代理,并希望发送数据。
wsdl
中指定了一些枚举值,其中设置了minoccurs="0"
。
如果我使用包含此类枚举的对象调用该代理上的方法,则不会发送它们。
我按照How to: configure network tracing中的描述开启了跟踪,并按Configuring tracing
中所述转换了所有跟踪所以我看到信封,枚举没有价值。甚至没有设置属性,这部分完全缺失。
我可以使用svcutil
在代理生成中以某种方式处理此问题吗?
如果从minoccurs
中删除wsdl
,则一切正常。
我已检查生成的代理,并且没有看到有关生成的类/枚举元素的任何差异。
答案 0 :(得分:1)
如果您的java服务的WSDL是SVCUTIL生成基于XmlSerializer的合同,那么您必须确保在发送数据之前在合同对象上设置正确的字段。
在这种情况下,您应该在名为Specified的合约上有另一个布尔字段/属性,您需要将其设置为true以告诉XmlSerializer包含非空值。