(ASP Classic)默认日期格式神秘地恢复

时间:2018-06-08 10:25:32

标签: .net asp-classic date-format globalization windows-server-2016

我工作的业务是在全新安装的Windows Server 2016上运行ASP Classic网站(我知道..)。在2012服务器上一切都很好,但我们的主机告诉我们发生了灾难性的硬盘故障,他们基本上不得不擦除所有内容并给我们一个新的操作系统,所以我一直试图重建整个事情。

一切正常,但ASP Classic网页中的日期默认为美国格式,没有前导零 - 例如,如果我从SQL Server数据库中检索YYYYMMDD日期,它将正确识别月/日但是默认为以美国格式显示。如果我使用我们的代码重新格式化month(dateVar)day(dateVar),一切仍然有用

以下是我尝试修复的内容,主要是我在堆栈溢出时发现的内容:

  • 将.NET全球化设置为en-GB(文化和ui文化)
  • 已检查并确保未应用组策略
  • 通过操作系统更改了Windows区域和日期格式设置
  • 改变了'sShortDate'和#DongDate'注册表中的格式HKEY_USERS/HKEY_LOCAL_USERS -> .DEFAULT -> Control Panel -> International
  • 添加了vbscript区域设置标识LCID=2057以在一个ASP页面中进行测试,并在Global.asa文件中进行测试无效

昨晚11点,一切都很美好。今天早上我醒来发现电子邮件说日期格式再次出错。据我所知,服务器一直都在运行

我已经检查并重新检查了我已经更改的所有内容,而且这完全取决于我是如何离开的......但是日期格式已经从(例如)21/01/2018变为2018年1月21日

有什么我想念的吗?我对Windows Server不熟悉

1 个答案:

答案 0 :(得分:0)

解决方案,感谢John。

我在网站的根目录中创建了一个Global.asa文件并添加了:

<script language="vbscript" runat="server"> sub Session_OnStart Session.LCID="2057" 'UK end sub </script>

然后解决了问题 - 可以使用ASP Response.write getLocale

进行测试

我有两个网站作为IIS中的应用程序添加,我不得不将Global.asa复制到他们的文件夹中

  

&lt;%@ LCID =“2057”%&gt;一直为我工作。我认为你把它放在页面开头的声明中

     

如果使用处理指令(带有@符号的位)太费力,您可以尝试将其设置为会话变量。 Session.LCID = 2057。 Global.asa将是显而易见的地方,但如果你有一个包含每个页面使用它的文件,那么它也应该在那里工作