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

Каждый пользователь моего приложения выберет свою страну, после чего она будет сохранена в куки и сохранена для последующих запросов. Все работает нормально, но мне нужно установить культуру в начале сеанса. В настоящее время я экспериментирую, устанавливая культуру в 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"), она по-прежнему отображается в GBP, а культура по-прежнему en-GB.

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


person Paul    schedule 13.12.2011    source источник


Ответы (2)


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

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

person Oded    schedule 13.12.2011
comment
Итак, мне нужно сделать это на каждой странице или создать базовую страницу для наследования каждой другой страницы? Блин, у меня в заявке больше 700 страниц. - person Paul; 13.12.2011
comment
@Paul - Да, это ваши варианты. Базовая страница, вероятно, лучший вариант. - person Oded; 13.12.2011
comment
к сожалению, вам все еще нужно что-то сделать для WebMethods. Вызовы Ajax не проходят через инициализацию страницы. - person Garr Godfrey; 25.09.2015

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

person lnu    schedule 13.12.2011