ASP.. NET应用程序有不正确的当前文化- en-CA而不是en-US

本文关键字:en-CA en-US 文化 应用程序 NET 不正确 ASP | 更新日期: 2023-09-27 17:51:04

我有一个ASP。. NET应用程序,我将其迁移到新服务器。我尽了最大的努力,尽可能地复制旧的web服务器设置。

然而,应用程序现在抛出了datetime。在日历控件上尝试解析异常。

ui设置为en-US

TryParse()方法显式指定en-US

文化似乎默认为en-CA。

IIS web配置没有改变(它们是默认的),服务器的语言设置被设置为en-US。

是否有未检查区域性设置的地方?我看了看这个堆栈线程,但没有什么立即跳出来。

通过web配置强制设置文化是这里唯一的解决方案吗?我一定是没有检查一个地方是否偶然设置了en-CA?

ASP.. NET应用程序有不正确的当前文化- en-CA而不是en-US

我在我们的服务器运行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

一旦这些注册表值被更改,机器将需要重新启动。

希望这对你有帮助,就像它帮助我们解决问题一样。

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

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

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

无论如何我敢打赌:

或在您的服务器机器中。配置区域性设置为"en-CA"

或日历控件(可能是javascript控件)正在加载clientculture。你可以查看浏览器的默认语言设置。