2016-03-07 114 views
1

我正在使用SOAPUI来调用具有十进制值的WCF端点。某处的价值正在转化为零。WCF将十进制值转换为零

我可以使用.NET应用程序中的相同参数调用相同的服务,并且该值不会被更改。我可以对我的.NET应用程序和SoapUI传递的值进行反序列化和检查,并且这两个对象的反序列化版本都是相同的。

在离开SoapUI后,我已经能够在Fiddler中捕获请求,并且十进制值仍然保持机智,所以我知道它在某个地方被转换为下游流。

这篇文章暗示这可能发生在代理生成时: int properties are 0 when consuming WCF in .Net 2 - 但证据并不指出这是服务中的问题,而不是客户端。

道歉由于企业隐私限制,我无法共享WSDL和XML。

+1

如果SoapUI将所有小数转换为零,您不会第一个注意到。请显示相关的WSDL和XML。 – CodeCaster

+0

xml模式中定义的数据类型是什么? – Rao

+0

绝对不是所有的小数。这感觉就像一个设置。由于公司对代码共享的限制,我无法显示WSDL或XML :-( –

回答

0

在我的情况下,解决方案是改变我的请求参数的顺序。

我可以通过enabling WCF tracing包括message payloads来确定,然后比较来自我的.NET应用程序的有效负载和来自SoapUI的有效负载。

有效载荷是大不相同的,但忽略命名空间,相关ID,键和日期我能够确定我的问题参数处于不同的位置。在SoapUI XML请求中更改顺序解决了问题。