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 请求中的顺序解决了问题。
我正在使用 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 请求中的顺序解决了问题。