Приложение ASP.NET не отражает региональные настройки
Я установил в своих региональных настройках (для чешского языка, культура cs-CZ) схему короткого времени / долгого времени следующим образом:
- Короткое время: мм
- Долгое время: H.mm.ss
Я пытаюсь использовать эти настройки в приложениях C#. В следующем консольном приложении все работает:
используя Систему; используя System.Globalization;
class Program
{
static void Main()
{
Console.WriteLine(CultureInfo.CurrentCulture.Name);
Console.WriteLine(CultureInfo.CurrentCulture.DateTimeFormat.LongTimePattern);
Console.ReadLine();
}
}
Вывод, как я думал, следующий:
cs-CZ
H.mm.ss
Я создал приложение ASP.NET, которое, к моему удивлению, не отражает это.
Минимальный пример:
<%@ Page Language="C#" %>
<%= System.Globalization.CultureInfo.CurrentCulture.Name %><br />
<%= System.Globalization.CultureInfo.CurrentCulture.DateTimeFormat.LongTimePattern %>
Выход:
cs-CZ
H:mm:ss
Я пытался перезагрузить, .NET2.0, .NET4.0, по-прежнему безрезультатно.
Примечание. Эта проблема возникла как часть ошибки, когда мы забыли включить InvariantCulture для DateTime.ToString(), которая затем должна быть проанализирована десериализатором JSON. (У парня с этой проблемой несколько другой разделитель формата времени).
Решение проблемы с повторным созданием CultureInfo - это не то, что я ищу, я просто хочу увидеть причину, так как я не смог воспроизвести проблему любым способом.
1 ответ
Проблема в том, что региональные настройки зависят от пользователя. Вы изменили их для себя, но сайт работает от имени другого пользователя (см. Пул приложений в IIS)