Ошибки, связанные с форматом даты в DSS(DateTime)
Опубликовано Илья Харченко on 2021-10-27 17:40

Пример ошибки:

 String was not recognized as a valid DateTime. System.FormatException: String was not recognized as a valid DateTime. at System.DateTimeParse.Parse

Данная ошибка может возникать в следующих случаях:

  •          если на различных узлах кластера DSSустановлен различный системный язык или формат языковых параметров;
  •          если разворачивается дополнительный узел кластера DSS с отличным от других узлов системным языком или форматом языковых параметров;
  •          если происходит смена языка или формата языковых параметров на сервере с установленным DSS.

Решение проблемы:

1.      Определить, под какой учетной записью работает приложение DSS, в котором была обнаружена ошибка. 

 Для этого перейдите в Диспетчер служб IIS. На странице «<Имя сервера> – Пулы приложений» найдите приложение, для которого возникла ошибка. В столбце «Удостоверение» напротив данного приложения будет отображено имя учетной записи, под которой оно работает.

 Если пул приложений работает под учетной записью, состоящей в группе «Пользователи домена» с правом входа в систему, необходимо войти в систему под данной учетной записью. В иных случаях вход в систему не требуется. Например, вход не требуется для учетных записей ApplicationPoolIdentity, NetworkServiceи т.п..
Если пул приложения DSS работает под учетной записью, находящейся в группе gMSA, данная инструкция неприменима. 

2.      Определить, какой формат языковых параметров был установлен при разворачивании DSS.

 Для этого в консоли PowerShell, запущенной от учетной записи (см. п. 1), выполните следующую команду:
(Get-DssCryptoProvider).settings

 В выводе настроек криптопровайдера содержится срок действия ключа. В зависимости от формата записи данного срока действия определите формат даты и времени, использованный при разворачивании DSS (например):

 * MasterKeyLifeTimeEnd 10/20/2024 12:36:37 AM – формат даты и времени США;

 * MasterKeyLifeTimeEnd 20.10.2024 0:34:35 – международный формат даты и времени (включая Россию).


 Внимание! Данный способ позволяет с высокой вероятностью, но не гарантированно определить использованный при разворачивании DSSформат языковых параметров.

3.       Измените формат языковых параметров на тех узлах кластера, где выявлено несоответствие. Пересоздавать экземпляры сервисов не требуется. Выполните следующие действия:

3.1.    Перейдите в «Панель управления» и найдите (при помощи поиска или в режиме просмотра «Крупные значки») меню «Региональные стандарты». Перейдите в «Региональные стандарты».

3.2.    На вкладке «Форматы» выберите формат даты и времени, соответствующий формату записи срока действия ключа из п. 2. Примените настройки.

3.3.    На вкладке «Дополнительно» нажмите кнопку «Копировать параметры».

3.4.    Установите чекбоксы «Экран приветствия и системные учетные записи» и «Новые учетные записи пользователей» и нажмите «ОК».

3.5.    В консоли PowerShell выполните следующую команду:
iisreset

(5 плюсик(ов))
Класс!
Не очень :(

Коментарии (0)