【发布时间】:2018-06-08 10:25:32
【问题描述】:
我工作的业务是在全新安装的 Windows Server 2016 上运行 ASP Classic 网站(我知道..)。以前在 2012 服务器上一切正常,但是我们的主机告诉我们发生了灾难性的 HDD 故障,并且他们基本上必须擦除所有内容并给我们一个新的操作系统,所以我一直在尝试重建整个东西。
一切正常,但 ASP Classic 网页中的日期默认为美国格式,没有前导零 - 例如,如果我从 SQL Server 数据库中检索 YYYYMMDD 日期,它将正确识别月/日,但只是默认为以美国格式显示。如果我使用我们的代码通过 month(dateVar) 和 day(dateVar) 重新格式化它,一切仍然有效
这是我为尝试修复它所做的工作,主要是我在堆栈溢出时发现的:
- 将 .NET 全球化设置为 en-GB(文化和 ui-culture)
- 检查并确保没有应用组策略
- 通过操作系统更改了 Windows 区域和日期格式设置
- 更改了注册表
HKEY_USERS/HKEY_LOCAL_USERS -> .DEFAULT -> Control Panel -> International中的'sShortDate' 和'sLongDate' 格式 - 添加了 vbscript 语言环境标识符
LCID=2057以在一个 ASP 页面中进行测试,并且在 Global.asa 文件中也无济于事
昨晚 11 点,一切正常。今天早上我醒来发现电子邮件说日期格式又错误了。据我所知,服务器也一直在运行
我已经检查并重新检查了我已经更改的所有内容,这完全是我离开它的方式...但是日期格式已从(例如)21/01/2018 变为 1/21/2018
我有什么遗漏吗?我对 Windows Server 不是很熟悉
【问题讨论】:
-
<%@ LCID="2057" %>一直为我工作。我认为您将其放在页面开头的声明中 -
啊,我没有意识到您需要 @ 符号 - 这有效但仅适用于它所在的页面。我可以手动将其添加到每个文件中,但这将非常费力 - 有吗某种方式在全球范围内应用它?我尝试将它添加到我们的 serverSettings.inc 文件中,但这产生了错误(@ 命令只能在 Active Server Page 中使用一次)
-
如果使用处理指令(带有@符号的位)太费力,您可以尝试将其设置为会话变量。
Session.LCID=2057。 Global.asa 是显而易见的地方,但如果你有一个每个页面都使用的包含文件,它也应该在那里工作。 -
感谢 John,您的生活更安全了 - 我已经设置了 Global.asa 文件,它现在可以工作了!
-
@RossCampbell 您还可以在网站的 IIS 管理器的 ASP 部分中设置默认 LCID。更改区域设置也应该可以在根本不需要指定 LCID 的情况下工作,可能是您更改了登录用户的设置而不是整个服务器,在基于 Windows 10 的操作系统(如 Windows Server 2016)中设置默认语言的过程非常不稳定.
标签: .net asp-classic date-format globalization windows-server-2016