为什么double.Parse()仅通过rdp引发FormatException?

问题描述:

我有一个真正奇怪的错误。我有一个.Net应用程序,它在将字符串解析为double时发生异常。 但是这只发生在槽RDP!为什么double.Parse()仅通过rdp引发FormatException?

我做了一个简单的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(); 
    } 
} 

当我执行当地它的工作原理,UT在RDP我有一个错误enter image description here

任何想法?该机器是Windows 2012R2,也是一个域控制器。 我尝试使用相同的用户来执行这个小应用程序,唯一的区别是RDP /本地

谢谢您的帮助

+4

你检查了远程机器上的本地化吗?它可能使用不同的小数点符号。 – user3021830 2015-02-23 11:57:45

double.Parse当前环境默认使用您的CurrentCulture设置。

听起来像你的远程环境使用的文化没有.作为NumberDecimalSeparator,这就是为什么你得到FormatException

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

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

或者您可以在您的本地环境中使用与您的远程环境文化设置相同的文化。

+0

非常感谢!你救了我的一天! – beny1700 2015-02-24 12:05:45

+0

@ beny1700很高兴帮助。 – 2015-02-24 12:06:22