为什么 double.Parse() 仅通过 rdp 抛出 FormatException?
Why double.Parse() throws FormatException only through rdp?
我有一个非常奇怪的错误。我有一个 .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 中我有一个错误
有什么想法吗?该机器是 Windows 2012R2,它也是一个域控制器。
我尝试用同一个用户执行这个小应用程序,唯一的区别是 RDP/Local
感谢您的帮助
double.Parse
默认使用 当前 环境中的 CurrentCulture
设置。
听起来您的远程环境使用的文化没有 .
作为 NumberDecimalSeparator
,这就是您得到 FormatException
.
的原因
作为替代方案,您可以使用 InvariantCulture
作为解析方法中的第二个参数,其中 .
已经作为 NumberDecimalSeparator
.
double d = double.Parse(s, CultureInfo.InvariantCulture);
或者您可以更改远程环境的文化设置,使其与您本地环境中使用的文化相同。
我有一个非常奇怪的错误。我有一个 .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 中我有一个错误
有什么想法吗?该机器是 Windows 2012R2,它也是一个域控制器。 我尝试用同一个用户执行这个小应用程序,唯一的区别是 RDP/Local
感谢您的帮助
double.Parse
默认使用 当前 环境中的 CurrentCulture
设置。
听起来您的远程环境使用的文化没有 .
作为 NumberDecimalSeparator
,这就是您得到 FormatException
.
作为替代方案,您可以使用 InvariantCulture
作为解析方法中的第二个参数,其中 .
已经作为 NumberDecimalSeparator
.
double d = double.Parse(s, CultureInfo.InvariantCulture);
或者您可以更改远程环境的文化设置,使其与您本地环境中使用的文化相同。