【发布时间】:2012-06-23 12:01:58
【问题描述】:
我刚刚将大约 100 个 ASP.net 站点从 Windows Sever 2003 上的 IIS 6 迁移到 Windows 2008 上的 IIS 7。我刚刚注意到使用 DateTime.Parse 之类的各种代码已经开始出现错误“字符串未被识别为有效的日期时间”。我已将此归结为网站的 CurrentCulture 默认为“en-US”,因此我的英国用户输入的日期格式异常。
问题是,他们从哪里获得 en-US?从顶部开始,如果我查看“控制面板 > 区域和语言”,所有内容都设置为英语(英国)。网站的 web.configs 要么没有
我找不到将文化设置为“en-US”的任何地方......但有些东西是。
Thread.CurrentThread.CurrentCulture.Name is outputting 'en-US'
Thread.CurrentThread.CurrentCulture.NumberFormat.CurrencySymbol is outputting '$'
我可以通过将
我错过了什么吗?
【问题讨论】:
-
您是否检查了 Internet Explorer 语言选项?网站使用这些语言设置来确定当前语言
-
是的,IE 语言设置为“英语(英国)[en-GB]”。我在所有浏览器中都遇到了同样的问题。
-
顺便说一句,您如何处理资源?只是 App_GlobalResources 或 App_LocalResources 下的 RESX 文件?或者它们是否嵌入在附属程序集中:
-
另外,您如何确定代码中的语言,我的意思是您是否将语言保存在 cookie 中?或者它是否存储在当前用户的数据库中?
-
App_LocalResources,但这个特殊问题与用户输入日期和 DateTime.Parse 失败有关,因为它期望的是美国日期,但它不应该是。我没有专门处理代码中的语言,我在来自日历控件的字符串上使用 Convert.ToDateTime。我没有在代码中的任何地方传递特定的文化,我依靠网站从用户的浏览器设置中获取文化。
标签: asp.net globalization culture uiculture