.Net与Convert.ToDecimal和culture的奇怪行为

时间:2016-09-06 03:37:42

标签: c# .net

今天我的工作遇到了一个奇怪的问题,我在解决方案上花了七个小时,但我没有单独成功。我有四台生产机器,两台有错误,两台没有。我的开发机器上不会发生错误。在下面的代码中:

//value = "120,01"
object objectValue = value;                  

objectValue = Convert.ToDecimal(value, new System.Globalization.CultureInfo("pt-BR"));

string description = string.Format("d {0} - N {1}:", value, (Convert.ToDecimal(objectValue , new System.Globalization.CultureInfo("pt-BR")).ToString(new System.Globalization.CultureInfo("pt-BR"))));

//Production two results:

//Machine 01: d 120,01 - N 120,01:
//Machine 02: d 120,01 - N 12001:

即使设置了文化,也会出现问题。在关闭四台计算机上的IIS进程后,它们现在正常运行。

但是发生了什么?

1 个答案:

答案 0 :(得分:0)

看起来小数点分隔符变为.

您使用的CultureInfo构造函数解析为this oneuseUserOverride参数位于true。请参阅备注中如何使用此参数。

运行应用程序池的用户的语言设置是否可能已更改?