【问题标题】:Change Default Locale in IIS 6.0更改 IIS 6.0 中的默认区域设置
【发布时间】:2024-04-26 11:00:02
【问题描述】:

我有一个由英国托管公司托管的托管 VPS,由于某种原因设置为美国设置。事实上,直到最近,区域设置还是“英语 - 美国”。我已更正了区域设置,但我的应用程序仍在使用错误的日期格式。见:

http://www.albaassoc.com/events/listevents.aspx

默认日期应该是当前日期到日期 + 3 个月,但正如您所见,dd 和 MM 字段交换了。注意:AJAX 日历扩展器手动设置为 dd/MM/yyyy,因此日历弹出窗口认为我们对 6 月/7 月而不是 1 月感兴趣!

我知道有多种方法可以将页面或应用程序设置为使用特定语言环境,但我更愿意采用全局方法。

是否可以重新配置 IIS 以在不同的语言环境中工作,或者如果不能,我是否可以调整 machine.config 使其成为一次性更改?

我已经向主机开放了一张票,但我不会屏住呼吸 - 他们不会想要重新安装 IIS...

提前致谢。

【问题讨论】:

    标签: iis localization iis-6


    【解决方案1】:

    通过globalization 元素,您可以为站点(通过web.config)或整台机器(通过machine.config)设置文化和uiculture。

    【讨论】:

    • 嗯...试过了。 Intellisense 不喜欢文化属性,而且它似乎也不管用。我会在我回到办公桌前发布我尝试过的代码。
    • 我尝试通过将 web.config 放在一个经典 ASP 应用程序的网站中,但它不起作用。我猜它只适用于 ASP.NET 应用程序,不适用于在 IIS 级别更改语言环境。
    【解决方案2】:

    我刚刚遇到了类似的问题(Windows Server 2008、IIS 7)。我可以通过编辑网络配置文件来修复它,但和你一样,我想要一个全局修复。

    解决方案在配置面板,区域设置中。我不知道你(你的操作系统是什么),但在 WS2008 下,区域设置下有一个管理选项卡。它允许您将登录用户(您)的设置复制到管理帐户(在这种情况下为网络服务)。重新启动并做对了。

    【讨论】:

    • 干杯尼古拉斯 - 我会看看那个。
    • 你是对的 Nicolas,实际上在下面有一个选项:控制面板 -> 区域和语言选项 -> 高级 -> 选中“将所有设置应用于当前用户帐户和默认用户配置文件” '。这对我有用。谢谢。
    • 对我不起作用 :( 网络服务和本地服务仍设置为 en-US,我想将其更改为 en-NZ。
    • 可能是Windows的版本问题,我用的是Win2k3。
    【解决方案3】:

    问题通常是运行 IIS 或您的应用所属的应用程序池的用户是安装服务器时创建的系统帐户。因此,他们继承了当时的默认语言环境。

    如果您无法在区域和语言选项中修复它,您可以随时尝试直接在注册表中进行编辑(通常的附带条件是乱搞注册表会严重破坏 Windows)。区域设置都在 HKEY_USERS\{userid}\Control Panel\International 下 - 如果您将每个用户的内容与您在 HKEY_CURRENT_USER\Control Panel\International 下的内容进行比较,那么应该很明显要更改什么。我已经在 Windows 2000 服务器上做了几次,并且运行良好。

    另一种选择是在具有正确区域设置的计算机上创建一个新用户,然后将 IIS 和应用程序池都设置为以该身份运行。

    【讨论】:

    • 谢谢罗伯特,我会调查的。您的第二个选择似乎是有利的 - 侵入性要小得多。
    • 谢谢你的回答解决了我的问题:) *.com/questions/1879461/…
    • @robertc - 干杯,修改注册表对我有用。我尝试了其他答案中提供的其他解决方案,但没有一个对我必须处理的经典 ASP/COM+ 应用程序有效。我使用这个link 来确定网络服务和本地服务帐户的 SID。
    • 更好的是,无需弄乱 regedit,请参阅 windows.microsoft.com/en-ca/windows/…
    【解决方案4】:

    有点老线程,但我仍然关注一些由现已不复存在的阿兹特克文明编写的经典 ASP 网站,以赞美他们的羽毛之神。

    服务器移动阻止了所有日期代码的工作并且牺牲了鸡没有帮助,所以这里是 IIS 7 中没有提到的非常简单的解决方案,可能是因为没有其他人像我一样受苦。

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

    这应该立即生效。

    或者你可以去买一个 DeLorean,回到过去,杀掉那个认为FormateDateTime(d, vbLongDate) 是生成数据库中使用的日期的最佳方法的程序员。或者说服客户给我很多钱来更换整个东西。哪个都好。

    【讨论】:

      【解决方案5】:

      我遇到了一个问题,当我希望日期格式为 dd/mm/yyyy 时,它的格式为 mm/dd/yyyy。 我正在使用 Windows Server 2003 和 IIS 6

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

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

      【讨论】: