更改以LocalSystem身份运行的Windows服务的默认区域性

时间:2017-05-29 09:35:42

标签: c# .net-4.0 windows-services windows-server-2008

我们的管理员意外地迁移了运行.NET Windows服务的服务器(到了Windows 2008 ......因为有些旧应用程序)。它在LocalSystem帐户下运行。目标框架是.NET framework 4 Client Profile。

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

当我添加到OnStart

Thread.CurrentThread.CurrentCulture = new CultureInfo("cs-CZ", false);

它变得更好,但仍然在某些方法中失败,可能在不同的therads中运行。

如何配置服务器或更改程序以使用适当的文化创建所有线程?

1 个答案:

答案 0 :(得分:1)

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

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

这是documented here,但需要注意的是它可能不适用于后续创建的线程。 Microsoft.NET Framework 4.6中包含了一个深刻的解决方案,read more on it here