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?
我在我们的服务器运行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。你可以查看浏览器的默认语言设置。