为什么double.Parse()仅通过rdp抛出FormatException?

时间:2015-02-23 11:56:55

标签: c# .net string parsing double

我有一个非常奇怪的错误。我有一个.Net应用程序,在将字符串解析为double时会出现异常。 但这只发生在RDP!

我做了一个简单的exe:

static void Main(string[] args)
{
     try
     {
          string s = "1.5";
          double d = double.Parse(s);
          Console.WriteLine("RES: " + d);
          Console.Read();
     }
     catch (Exception e)
     {
          Console.WriteLine("Message: "+e.Message+", trace: "+e.StackTrace);
          Console.Read();
     }
}

当我在本地执行它工作时,在RDP中我有一个错误enter image description here

有什么想法吗?该机器是Windows 2012R2,也是域控制器。 我尝试用同一个用户执行这个小应用程序,唯一的区别是RDP / Local

感谢您的帮助

1 个答案:

答案 0 :(得分:7)

默认情况下,

double.Parse会在当前环境中使用您的CurrentCulture设置。

听起来您的远程环境使用的文化没有.作为NumberDecimalSeparator,这就是您获得FormatException的原因。

作为替代方案,您可以在解析方法中使用InvariantCulture作为第二个参数,其中.已作为NumberDecimalSeparator

double d = double.Parse(s, CultureInfo.InvariantCulture);

或者,您可以在本地环境中使用相同的文化更改远程环境的区域性设置。