在IIS 6.0中更改默认语言环境

9
我有一个由英国托管公司提供的托管VPS,但由于某种原因,它被设置为美国设置。实际上,直到最近,区域设置仍然是“英语-美国”。我已经更正了区域设置,但我的应用程序仍然使用错误的日期格式。请参见:http://www.albaassoc.com/events/listevents.aspx。默认日期应该是当前日期到日期+ 3个月,但是您可以看到dd和MM字段被交换了。注意:AJAX日历扩展器手动设置为dd/MM/yyyy,这就是为什么日历弹出窗口认为我们对6月/7月感兴趣而不是1月的原因!我知道有各种方法可以设置页面或应用程序以使用特定的语言环境,但我更喜欢采用全局方法。是否可以重新配置IIS以在不同的语言环境中工作,如果不行,我能否调整machine.config使其成为一次性更改?我已经向主机开了一个票,但我不会抱太大希望-他们不想重新安装IIS...提前致谢。
5个回答

6

通过 全球化 元素,您可以在网站(通过 web.config)或整个计算机(通过 machine.config)上设置文化和用户界面文化。


嗯...尝试过了。Intellisense不喜欢culture属性,而且似乎也没起作用。等我回到办公桌前,我会发布我尝试过的代码。 - CJM
我尝试通过在经典ASP应用程序的网站中放置web.config来实现,但是它没有起作用。我猜它只适用于ASP.NET应用程序,而不适用于在IIS级别更改区域设置。 - John Mills

6
我刚遇到了类似的问题(Windows Server 2008,IIS 7)。我通过编辑Web配置文件来解决它,但是像您一样,我也想要一个全局解决方案。
解决方案在配置面板的区域设置中。我不知道您的操作系统是什么,但是在WS2008下,区域设置下有一个管理选项卡。它允许您将您登录的用户(您)的设置复制到管理帐户(在这种情况下为网络服务)。重新启动即可解决问题。

谢谢 Nicolas - 我会看一下的。 - CJM
你是对的Nicolas,实际上有一个选项在:控制面板->区域和语言选项->高级->勾选“将所有设置应用于当前用户帐户和默认用户配置文件”。这对我有用。谢谢。 - lidermin
对我没用 :( Network Service 和 Local Service 仍然设置为 en-US,而我想要将其更改为 en-NZ。 - John Mills
也许Windows的版本很重要,我使用的是Win2k3。 - John Mills

4
问题通常在于运行IIS或应用程序池的用户是系统帐户,该帐户是在安装服务器时创建的。因此,他们继承了当时的默认区域设置。
如果无法在区域和语言选项中修复它,则始终可以尝试直接在注册表中进行编辑(通常情况下,更改注册表可能会严重破坏Windows)。所有区域设置都在HKEY_USERS\{userid}\Control Panel\International下 - 如果将每个用户的内容与HKEY_CURRENT_USER\Control Panel\International下的内容进行比较,应该很容易知道要更改什么。我已经在Windows 2000服务器上做过几次,效果还不错。
另一种选择是在机器上创建一个具有正确区域设置的新用户,然后将IIS和应用程序池都设置为以该身份运行。

谢谢Robert,我会研究一下。你的第二个选项似乎更可取——干扰性小得多。 - CJM
谢谢你的回答,解决了我的问题 :) http://stackoverflow.com/questions/1879461/date-format-in-asp-net-versus-in-console-application - ala
@robertc - 感谢,修改注册表是对我有效的方法。我尝试了其他答案中提供的解决方案,但对于我正在处理的经典ASP/COM+应用程序都没有效果。我使用了这个链接来确定网络服务和本地服务帐户的SID。 - John Mills
更好的是,无需繁琐地操作注册表,可参见http://windows.microsoft.com/zh-cn/windows/apply-regional-language-settings-reserved-accounts#1TC=windows-7。 - ademar

2

虽然这是一个有点老的帖子,但我仍然负责维护一些由已经消失的阿兹特克文明为了赞美他们的羽毛神而编写的传统ASP网站。

服务器移动导致所有日期代码都无法工作,宰杀鸡只也没有帮助,所以在IIS 7中提供了一个非常简单的解决方案,可能因为没有人像我一样遭受这种痛苦,所以没有被提到。

  1. 进入IIS管理器。
  2. 选择要应用于所有站点的根服务器节点,或者如果您想保留服务器默认设置,则选择您遇到问题的站点节点。
  3. 在IIS部分,双击ASP图标。
  4. 将区域设置ID设置为所需的区域设置(英国为2057)。

这应该立即生效。

或者,您可以购买一辆DeLorean,回到过去并杀死那个决定使用FormateDateTime(d, vbLongDate)来生成要在数据库中使用的日期的程序员。或者说服客户给我很多钱来替换整个东西。 都行。


1

我遇到了一个问题,当我想要日期格式为dd/mm/yyyy时,它被格式化为mm/dd/yyyy。

我正在使用Windows Server 2003和IIS 6。

解决方案是在任何Web配置文件中添加以下内容,然后重新启动服务器,它应该可以正常工作。

<globalization requestEncoding="utf-8" responseEncoding="utf-8"  culture="en-GB" />

1
此答案中提到的代码未显示。我使用了这个答案中的代码来解决这个问题 http://stackoverflow.com/questions/1879461/date-format-in-asp-net-versus-in-console-application/1880178#1880178 - Leah

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接