我有一个称为语言的会话变量,用于翻译使用ASP.NET Web表单构建的网站。这是在Session_Start事件上设置的。在global.asax Application_AcquireRequestState中,我具有以下代码:
if (HttpContext.Current == null || HttpContext.Current.Session == null
|| HttpContext.Current.Session["Language"] == null) { return; }
System.Globalization.CultureInfo ci = new
System.Globalization.CultureInfo((string)HttpContext.Current.Session["Language"]);
System.Threading.Thread.CurrentThread.CurrentCulture = ci;
System.Threading.Thread.CurrentThread.CurrentUICulture = ci;
大多数情况下,翻译工作都像预期的那样。但是有时用户会为整个页面或页面的一部分获得另一种语言。我已经对此进行了试验,如果两个用户同时加载一个页面,我会遇到问题。
我的理论是语言的会话变量在会话之间是混杂的,但这怎么可能呢?会话变量不是唯一的并锁定到用户会话吗?