Настройка культуры для сессии

Каждый пользователь моего приложения выберет свою страну, после чего оно будет сохранено в файле cookie и сохранено для последующих запросов. Все работает хорошо, но мне нужно установить культуру в начале сеанса. В настоящее время я экспериментирую, установив в web.config культуру en-GB, а затем использую Global.asax для переопределения культуры сеанса на en-US. Код ниже

protected void Session_Start(object sender, EventArgs e)
    {
        if (Globals.CountryID == 8)
        {
            Thread.CurrentThread.CurrentCulture = CultureInfo.GetCultureInfo("en-US");
            Thread.CurrentThread.CurrentUICulture = CultureInfo.GetCultureInfo("en-US");
        }
    }

Идентификатор страны равен 8, а в следующем коде задана культура en-US. Тем не менее, когда я перехожу на страницу с установленной ToString("C"), она все равно отображается в фунтах стерлингов, а культура по-прежнему в en-GB.

Какие-либо предложения?

2 ответа

Решение

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

Вы можете сохранить культуру в Session переменная и использовать переопределение InitializeCulture на ваших страницах, как описано в: Как: установить культуру и культуру пользовательского интерфейса для глобализации веб-страниц ASP.NET.

Вы должны установить культуру для каждого вызова, Session_Start запускается только при создании сеанса. Таким образом, ваша культура верна только при первом вызове или при воссоздании сеанса.

Другие вопросы по тегам