C# 更改作为LocalSystem运行的windows服务的默认区域性

C# 更改作为LocalSystem运行的windows服务的默认区域性,c#,.net-4.0,windows-services,windows-server-2008,C#,.net 4.0,Windows Services,Windows Server 2008,我们的管理员意外地迁移了运行my.NET windows服务的服务器(由于一些旧应用,迁移到windows 2008)。它在LocalSystem帐户下运行。目标框架是.NET framework 4客户端配置文件 在我的服务中,方法DateTime.Parse现在抛出无效格式异常 当我添加到OnStart Thread.CurrentThread.CurrentCulture = new CultureInfo("cs-CZ", false); 它变得更好,但在某些方法中仍然失败,可能运行在

我们的管理员意外地迁移了运行my.NET windows服务的服务器(由于一些旧应用,迁移到windows 2008)。它在LocalSystem帐户下运行。目标框架是.NET framework 4客户端配置文件

在我的服务中,方法
DateTime.Parse
现在抛出无效格式异常

当我添加到
OnStart

Thread.CurrentThread.CurrentCulture = new CultureInfo("cs-CZ", false);
它变得更好,但在某些方法中仍然失败,可能运行在不同的therad中


如何配置服务器或更改程序以使所有线程都具有适当的区域性?

从Microsoft.NET Framework 4.5及更高版本开始,您可以使用

var culture = CultureInfo.CreateSpecificCulture("cs-CZ");
CultureInfo.DefaultThreadCurrentCulture = culture;

也就是说,需要注意的是,它可能不适用于随后创建的线程。Microsoft.NET Framework 4.6中包含了一个深刻的解决方案。

在哪个框架版本上?也许@dlatikay.NET framework 4客户端配置文件那么我需要为4.5重新生成吗?不,你需要。这两个版本都将安装在Windows Server 2008 SP2上,所以这一版本,或者查找生成线程的所有行,或者查找所有出现的
DateTime.Parse
DateTime.ToString
等,并使用其
provider
参数注入区域性。