WCF 将十进制值转换为零

WCF converting decimal value to zero

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

我可以从 .NET 应用程序使用相同的参数调用相同的服务,并且值没有改变。我可以反序列化和检查从我的 .NET 应用程序和 SoapUI 传递的值,并且对象的两个反序列化版本是相同的。

我已经能够在 Fiddler 离开 SoapUI 后在 Fiddler 中捕获请求,并且十进制值仍然完好无损,所以我知道它正在某处下游转换。

这 post 表明在生成代理时可能会发生这种情况: int properties are 0 when consuming WCF in .Net 2 - 但没有证据表明这是服务中的问题,而不是客户端中的问题。

抱歉,由于公司隐私限制,我无法共享 WSDL 或 XML。

我的解决方案是更改请求参数的顺序。

我能够通过 enabling WCF tracing, including message payloads 确定这一点,然后将我的 .NET 应用程序的有效负载与 SoapUI 的有效负载进行比较。

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