asp.net – CultureInfo值在同一文化的应用程序之间有所不同.这是一个错误吗?

我在Windows 8开发盒上发生了一个奇怪的问题.在比较运行Kentico的ASP .NET应用程序和控制台应用程序(均在.NET 4.0上运行)时,以下代码行为NumberFormat.NumberDecimalSeparator生成两个不同的值.

var culture = new System.Globalization.CultureInfo("en-ZA");
var separator = culture.NumberFormat.NumberDecimalSeparator;

分离器的价值:

> Kentico应用程序:“,”< - 逗号
>控制台应用程序:“.” < - 期间
我的区域设置的正确输出是句点.

这怎么可能?当我第一次选择十进制数字的格式化问题时,我认为它可能是一个Kentico错误,但是此测试表明不是这样.对于特定区域设置,CultureInfo的新实例如何返回跨应用程序不同的实例?

最佳答案
Jason Evans’s评论指出了我正确的方向.看他发布的链接:ASP.NET application doesn’t reflect Regional settings

事实证明,区域设置是在Windows中按用户存储的.这是我应该知道的.更新应用程序池以自己运行会在两个应用程序中产生相同的结果.

公平地说,仍然令人困惑的是网络服务(应用程序池运行的帐户)的价值是多少.我甚至不确定如何纠正这个问题.

编辑:

如果您需要更新保留帐户的区域设置.你有两个选择.

>控制面板>区域设置>单击管理选项卡,然后选择“复制设置”.在启动的屏幕上,确保选中“欢迎屏幕和系统帐户”.我相信较旧版本的Windows是相似的.
>勇敢的.注册表:HKEY_USERS> SID …>控制面板>国际.网络服务的安全标识符为:SID:S-1-5-20.

确保重新启动应用程序池以使设置生效.

转载注明原文:asp.net – CultureInfo值在同一文化的应用程序之间有所不同.这是一个错误吗? - 代码日志