ASP.NET应用程序具有错误的CurrentCulture - en-CA而不是en-US

时间:2014-03-20 15:37:30

标签: c# asp.net globalization cultureinfo

我有一个迁移到新服务器的ASP.NET应用程序。我努力尽可能地复制旧的Web服务器设置。

但是,应用程序现在在我们的日历控件上抛出datetime.tryparse异常。

UICulture设置为en-US

TryParse()方法明确指定了en-US

文化似乎默认为en-CA。

IIS Web配置未更改(默认设置),服务器的语言设置设置为en-US。

我有没有找不到文化背景的地方?我看了this stack thread但没有立刻跳出来看我。

通过网络配置强制文化是唯一的解决方案吗?当然我一定没有检查到一个偶然设置en-CA的地方?

2 个答案:

答案 0 :(得分:1)

添加web.config这是完全合法的,如果您希望您的网站始终在这种文化中运行:

<system.web>
....
<globalization culture="en-US" uiCulture="en-US"  enableClientBasedCulture="false"  />

它与您在代码DefaultThreadCurrentCulture中设置的相同。

无论如何,我可以打赌:

或在您的server's machine.config文化中设置为“en-CA”

或您的日历控件(可能是一个javascript)正在加载客户端文化。您可以查看浏览器默认语言设置。

答案 1 :(得分:1)

我遇到了与我们的服务器机器运行Windows Server 2008 R2的环境类似的问题,经过努力,我们设法找出当前线程从哪里读取文化。

如果您在注册表中导航到以下路径

HKEY_USERS\.DEFAULT\Control Panel\International

你会发现它可能被设置为你不想要的东西。例如,如果您想将其更改为“en-CA”,则需要将当前注册表值更改为以下内容:

Locale: 00001009
LocaleName: en-CA
sCountry: Canada
sLongDate: MMMM-dd-yy
sShortDate: dd/MM/yyyy
sYearMonth: MMMM, yyyy

更改这些注册表值后,计算机将需要重新启动。

希望这对你帮助我们解决问题有所帮助。