HttpContext.Current.Request.UserLanguages ​​имеет значение NULL при первой загрузке IE11 / Edge в европейских странах - PullRequest
0 голосов
/ 12 февраля 2019

Я поддерживаю приложение (c # / asp.net), которое использует несколько языков, используя файлы .Resx для многих европейских стран.Недавно некоторые пользователи обновились до Windows 10 и, следовательно, Internet Explorer 11. Теперь, когда они загружают приложение, по умолчанию на главной странице используется en-US, и когда они переходят на страницу, которая вызывает функцию, которая ссылается на HttpContext.Current.Request.UserLanguages[0], она возвращаетсякак NULL, вызывая сбой с ошибкой ссылки NULL.

Если они каким-либо образом меняют свои языковые настройки (добавляют, удаляют или перемещают язык вверх или вниз), то HttpContext.Current.Request.UserLanguages[0] заполняется этим основным языком.Однако, как только они перезагрузят свой компьютер и снова откроют IE11, поле снова будет пустым, пока они снова не изменят свои настройки.

Как я могу установить / определить правильный язык, не заставляя пользователя менять свой языкнастройки каждый раз, когда они открывают IE11 после перезагрузки?

Эта ошибка не возникает в Chrome, но некоторые пользователи могут не иметь доступа к Chrome.

Примечания Я обнаружил из прошлых исследований и в настоящее времяв моем проекте:

Все страницы имеют Culture="auto" и UICulture="auto";

При первой загрузке приложения System.Threading.Thread.CurrentThread.CurrentUICulture = en-US (а не язык по умолчанию);(то же самое относится и к CurrentCulture - оба изначально установлены на en-US)

После того, как они изменят свои языковые настройки, тогда System.Threading.Thread.CurrentThread.CurrentUICulture изменится на установленный язык (например: fr-CH для французскогоSwiss);

Подведем итог: как определить настройку языка IE11 для пользователя, когда Request.UserLanguages равен NULL и когда CurrentThread.CurrentUICulture по умолчанию равен en-US, а не языку их системы?Есть ли обходной путь для использования Request.UserLanguages?

Я попросил пользователя зайти в Edge и попробовать его, и возникли те же проблемы.Приложение не распознает местную культуру / язык - по умолчанию используется en-US, а не en-UK или fr-CH, например.Кроме того, приложение закодировано для проверки разных культур для отображения дат в формате культуры, поэтому для Европы необходим формат ДД / ММ / ГГГГ, а для США - ММ / ДД / ГГГГ;валюта тоже другая.Поэтому мне нужно иметь возможность определять правильную культуру в Windows 10, не заставляя пользователя менять свои языковые настройки на HttpContext.Current.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...