TimeSeparator отличается на локальном сервере и Azure Web App - PullRequest
0 голосов
/ 08 июня 2018

Я собираюсь перенести унаследованную систему со стороннего хостинг-провайдера на веб-приложения Azure.

Вот характеристики системы:

  • Asp.Net Mvc(некоторые виды бритвы, но в основном REST-API)
  • Angular 1x
  • Dotnet Framework 4.7.1 (да, мы обновили до более поздней версии DNF)

Во время тестирования я обнаружил ошибку на клиенте, когда moment.js пытается проанализировать dateTime, возвращенный API REST.

После некоторых исследований кажется, что Azure возвращает datetime с "."(точка) в качестве разделителя времени, то есть «12.10.22».Однако размещенное решение возвращает «:» (двоеточие) в качестве разделителя времени, то есть «12:10:22», даже если Культура установлены на nb-NO и uiCultire установлены в nb-NO в web.config:

 <globalization culture="nb-NO" uiCulture="nb" />

Я не решаюсь изменить культуру на en-US , чтобы заставитьсистема, которая будет использовать двоеточие в качестве разделителя времени, поскольку я не знаю, будет ли это приводить к другим ошибкам.

Кто-нибудь знает, почему это происходит, и есть какие-либо предложения о том, как решить эту проблему?

С уважением, Джон

1 Ответ

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

Культура определяет культуру по умолчанию для обработки входящих веб-запросов.

Конфигурация по умолчанию

Следующий элемент глобализации по умолчанию явно не настроенв файле Machine.config или в корневом файле Web.config.Однако это конфигурация по умолчанию, возвращаемая приложением.

<globalization requestEncoding="utf-8" 
               responseEncoding="utf-8" 
               fileEncoding="" 
               culture="" 
               uiCulture="" 
               enableClientBasedCulture="false" 
               responseHeaderEncoding="utf-8" 
               resourceProviderFactoryType="" 
               enableBestFitResponseEncoding="false" />

Инвариантная культура нечувствительна к культуре. Вы можете указать инвариантную культуру по имени, используя пустую строку ("") или по ее идентификатору культуры 0x007F.

InvariantCulture извлекает экземпляр инвариантной культуры.Это связано с английским языком, но не с какой-либо страной / регионом .Его можно использовать практически в любом методе пространства имен Globalization, для которого требуется культура.

Если решение по безопасности зависит от сравнения строк или операции изменения регистра, используйте InvariantCulture, чтобы обеспечить согласованность поведения независимо от настроек культуры системы.

Таким образом, вы можете установить <globalization uiCulture="" culture="" /> в web.config или просто не настраивать его с помощью конфигурации по умолчанию.

...