我的应用程序的每个用户都将选择他们的国家/地区,之后它将存储在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")的页面时,它仍然以GBP显示,文化仍然是en-GB。
有什么建议吗?
答案 0 :(得分:8)
您假设为页面请求提供服务的线程与您的代码中启动会话的线程相同 - 这不能保证。
您可能希望将文化保存在Session
变量中,并在页面中使用覆盖InitializeCulture
,如:How to: Set the Culture and UI Culture for ASP.NET Web Page Globalization中所述。
答案 1 :(得分:1)
您必须在每次调用时设置文化,Session_Start仅在创建会话时触发。因此,只有在第一次通话或重新创建会话时,您的文化才是正确的。