C# 创建自定义区域性,然后使用“修改”;“地区和语言”;Windows中的对话框
我刚刚按照MSDN文章中描述的步骤创建并注册了一个新的区域性: 一切看起来都很好。我可以在Windows的“区域和语言”对话框中看到我的新区域性。我甚至可以将区域性加载回我的应用程序 当我在“控制面板”的“区域和语言”对话框中直接更改某些内容时(假设NumberDecimalSeparator应为点“.”而不是逗号“,”),然后尝试检索区域性:C# 创建自定义区域性,然后使用“修改”;“地区和语言”;Windows中的对话框,c#,globalization,cultureinfo,C#,Globalization,Cultureinfo,我刚刚按照MSDN文章中描述的步骤创建并注册了一个新的区域性: 一切看起来都很好。我可以在Windows的“区域和语言”对话框中看到我的新区域性。我甚至可以将区域性加载回我的应用程序 当我在“控制面板”的“区域和语言”对话框中直接更改某些内容时(假设NumberDecimalSeparator应为点“.”而不是逗号“,”),然后尝试检索区域性: var ci = CultureInfo.GetCultureInfo(CultureName); ci.ClearCachedData(); ci =
var ci = CultureInfo.GetCultureInfo(CultureName);
ci.ClearCachedData();
ci = CultureInfo.GetCultureInfo(CultureName);
我仍然有我注册的相同的文化信息。手动更改不会投射到检索到的CultureInfo对象中
这是正确的行为还是我做错了什么
编辑:
如果我再想一想,很明显,问题是我在IIS中运行应用程序的用户帐户与在“控制面板”中更改区域性信息的用户帐户不同,因为正如我所注意到的,这是一个用户自定义区域性
正确的问题是,如何注册一个对所有用户(或至少对IIS用户和一些管理员用户)通用的区域性?
我想这样做的原因是:
至少尝试注销+登录以查看是否清除任何缓存数据。问题似乎与应用程序正在IIS中运行有关。我尝试用上面的代码运行简单的asp.net应用程序。如果我在VS Development server中运行它,一切正常。当我切换到IIS时,我会得到默认值。所以问题可能是IIS中的应用程序在不同的用户帐户下运行?
var ci = CultureInfo.GetCultureInfo(CultureName);
ci.ClearCachedData();
ci = CultureInfo.GetCultureInfo(CultureName);