Настройка культуры для сессии - PullRequest
4 голосов
/ 13 декабря 2011

Каждый пользователь моего приложения выберет свою страну, после чего оно будет сохранено в 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");
        }
    }

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

Есть предложения?

Ответы [ 2 ]

8 голосов
/ 13 декабря 2011

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

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

1 голос
/ 13 декабря 2011

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

...