ASP.NET刷新文化定义

时间:2012-11-08 19:29:49

标签: asp.net .net globalization

我目前正在开发一个全球化的ASP.NET应用程序(需要使用英语和法语)。

我的问题是,Windows中的法语文化已被修改(数字和货币小数点分隔符已设置为“。”而不是“,”,这是默认值)我需要它具有默认值。总而言之,这很麻烦decimal.TryParse()函数,我不想用代码修补它(问题是设置问题,所以我需要修复设置,而不是代码)。 / p>

所以我转到Windows控制面板,重置了文化默认值(数字/货币小数分隔符从“。”返回到“,”),并期望更改在我的Web应用程序中生效。不,不行。

好吧,也许它需要一个好的旧iisreset才能生效。做了,再次测试......不,同样的错误。

好的,迁移很深,所以为什么不重新启动机器呢。重新启动,重新测试,......不,小数分隔符仍然是“。”。

令人沮丧的......让我们看看简单的简单控制台应用程序将会做什么。在一个控制台中,它就像一个魅力。它始终与Windows设置相同。

是否可以在安装时定义ASP.NET的文化定义,之后无法更改?尝试aspnet-regiis -i只是为了确定并猜测是什么?没工作!

那么,有谁能告诉我ASP.NET如何管理它的文化定义以及如何让它来更新它们?

提前致谢!

更新(调试信息):

从我的计算机上的这个配置开始(只显示小数点分隔符,但我正在更改小数和货币分隔符):

Windows Config Before

我在ASP.NET应用程序Debug:

中得到了这个

ASP.NET Debug Before

这在普通的控制台应用程序中:

Console Debug Before

然后我将Windows配置更改为:

Windows Config Before

在ASP.NET Debug中(在iisreset之后,重启等),我得到了这个:

ASP.NET Debug After

控制台应用程序中的正确设置:

Console Debug After

更新2(注册表信息):

我的一位同事指出,本地化信息保存在一些注册表项下:

HKEY_USERS\.DEFAULT\Control Panel\International

HKEY_USERS\S-1-5-20\Control Panel\International

我们认为,如果本地化是用户定义的,并且IIS与DefaultAppPool用户一起运行,则更改我的用户本地化设置将不会产生任何影响。

Windows提供了刷新系统帐户和新用户的本地化设置的可能性:

Windows Regional Settings window Windows Copy Settings window

检查两个复选框似乎重置evething但是DefaultAppPool设置。

1 个答案:

答案 0 :(得分:0)

基于注册表信息的第二次更新,我们采取了简单的方法:将默认的本地化设置从默认复制到DefaultAppPool用户使用的设置。

所以:

  1. 导出

    HKEY_USERS\.DEFAULT\Control Panel\International

  2. 导出(备份 - >重要!!,如果出现问题,您将需要它)

    HKEY_USERS\S-1-5-82-3006700770-424185619-1745488364-794895919-4004696415\Control Panel\International

    其中S-1-5-82-3006700770-424185619-1745488364-794895919-4004696415是DefaultAppPool用户使用的密钥

  3. 将第一个导出的密钥路径修改为与第二个

  4. 相同
  5. 导入修改后的注册表项
  6. 即使这肯定解决了这个问题,可能会有更好的解决方案,我仍然希望从中获取。