如何在包装器类后面的非页面上获取会话信息或当前区域性信息

本文关键字:信息 会话 获取 区域性 包装 | 更新日期: 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对象的访问。