(ASP Classic) формат даты по умолчанию загадочным образом - PullRequest
0 голосов
/ 08 июня 2018

Бизнес, на котором я работаю, - это запуск веб-сайта ASP Classic (я знаю ..) на новой установке Windows Server 2016. Ранее на сервере 2012 года все было в порядке, однако наши хосты сказали нам, что произошел катастрофический сбой жесткого диска иим в основном пришлось стереть все и дать нам новую ОС, поэтому я пытался перестроить все это.

Все работает, но даты на веб-страницах ASP Classic по умолчанию имеют формат США без ведущихнули - например, если я получу дату ГГГГММДД из базы данных SQL Server, она будет правильно определять месяц / день, но просто по умолчанию отображать ее в формате США.Если я использую наш код, чтобы переформатировать его с помощью month(dateVar) и day(dateVar), все по-прежнему работает

Вот что я сделал, чтобы попытаться это исправить, в основном то, что я обнаружил при переполнении стека:

  • установить для .NET Globalization значение en-GB (культура и пользовательский интерфейс)
  • проверил и убедился, что групповые политики не применены
  • изменил региональные настройки Windows и формат даты с помощьюОС
  • изменила формат 'sShortDate' и 'sLongDate' в реестре HKEY_USERS/HKEY_LOCAL_USERS -> .DEFAULT -> Control Panel -> International
  • добавлен идентификатор языкового стандарта vbscript LCID=2057 для тестирования на одной странице ASP, а также в файле Global.asaбезрезультатно

Прошлой ночью в 11 вечера все работало прекрасно.Этим утром я проснулся, чтобы найти электронные письма, в которых говорилось, что форматы даты снова неверныНасколько я могу судить, сервер тоже все время работал

Я проверил и перепроверил все, что уже изменил, и это все именно так, как я его оставил ... но формат датыперешел с (например) 21.01.08 на 21.01 2018

Есть ли что-то, что я пропустил?Я не очень знаком с Windows Server

1 Ответ

0 голосов
/ 08 июня 2018

Решение, спасибо Джону.

Я создал файл Global.asa в корневом каталоге сайта и добавил:

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

После этого была решена проблема, которую можно протестировать с ASPResponse.write getLocale

У меня было два сайта, которые добавляются как приложения в IIS, и мне пришлось скопировать Global.asa в их папки также

<% @ LCID = "2057"%> всегда работал для меня.Я так понимаю, вы помещаете это в объявление в начале страницы

Если слишком много усилий для использования директивы обработки (бит с символом @), вы можете попробовать установить ее в качестве переменной сеанса.Session.LCID = 2057.Глобальный.asa был бы очевидным местом, но если у вас есть включаемый файл, который использует каждая страница, он также должен работать там

...