【发布时间】:2010-01-12 21:49:44
【问题描述】:
我的问题类似于这个问题但不完全相同:Change culture when deserializing WCF service
我使用 VS 2008 构建了一个在 Windows 7 (IIS 7.5) 上运行的 WCF (web) 服务。我的 web 服务中的一个属性被键入为 System.Double。在构建我自己的客户端以测试服务时,Visual Studio 要求我编写 - 例如 - 像 123.4 这样的数字(使用点作为小数点)。但是,当使用 WcfTestClient.exe 访问服务并在字段上输入一个数字(如 123.4,仍然使用点)时,它会给我消息“123.4 不是这种类型的有效值”。我应该提到我住在瑞典,逗号是这里特定文化的小数点符号。
如果我在使用 WcfTestClient 时使用逗号 (,) 作为小数点,则可以接受。问题是,当我调试我的 web 服务代码时,我可以看到逗号被序列化过程以某种方式删除,并且数字已更改为 1234。不好。
在我的开发环境中,服务和客户端都在同一台机器上运行。网络服务在使用相同语言环境的 NetworkService 帐户下运行。
我的问题是:我如何在 WCF 中确保在此字段/属性上提供给 web 服务的任何数字,如果包含逗号,则不应删除逗号?
我认为这是在框架中自动处理的。只要值保持不变,我真的不在乎数字是用逗号还是点存储。
我正在使用 DataContractSerializer 和自动实现的属性,如下所示:[DataMember] public double Price { get; set; }
我还测试了在 setter 中使用 Convert.ToDouble(value, System.Globalization.CultureInfo.InvariantCulture) 构建属性,而 WCF 服务中的结果没有明显变化。
【问题讨论】:
标签: wcf serialization