如何在包装器类后面的非页面上获取会话信息或当前区域性信息
本文关键字:信息 会话 获取 区域性 包装 | 更新日期: 2023-09-27 18:13:53
我有Main。母版页具有设置CultureInfo并将其存储在会话中的按钮:
protected void RU_Click(object sender, ImageClickEventArgs e)
{
Session["MyCulture"] = CultureInfo.CreateSpecificCulture("ru-Ru");
Server.Transfer(Request.Url.LocalPath);
}
protected void USA_Click(object sender, ImageClickEventArgs e)
{
Session["MyCulture"] = CultureInfo.CreateSpecificCulture("en-AU");
Server.Transfer(Request.Url.LocalPath);
}
我在包装类后面写了一个非页面,在这个类中,我需要从会话中获得这个文化。我试着像这样获取当前文化信息:
(CultureInfo)HttpContext.Current.Session["MyCulture"]
但是HttpContext.Current
是NULL!如何解决这个问题?
如果你的类不是从Page或UserControl继承的,那么你应该把当前Context作为参数传递给需要使用它的方法。
另外,如果你的类是一个ASHX页面,那么你需要指出这个页面实现了System.Web.SessionState.IRequiresSessionState.
我假设访问HttpContent.Current
的代码运行在ASP的叉形线程上。净的线程。
如果是这种情况,那么HttpContent.Current
将不可用,因此最好将任何依赖对象(如当前文化)传递到新线程,而不是依赖于对当前HttpContext对象的访问。