C# 如何在包装类后面的非页面上获取会话信息或当前区域性信息?
我有一个带有按钮的主页面,这些按钮设置CultureInfo并将其存储在会话中:C# 如何在包装类后面的非页面上获取会话信息或当前区域性信息?,c#,asp.net,C#,Asp.net,我有一个带有按钮的主页面,这些按钮设置CultureInfo并将其存储在会话中: protected void RU_Click(object sender, ImageClickEventArgs e) { Session["MyCulture"] = CultureInfo.CreateSpecificCulture("ru-Ru"); Server.Transfer(Request.Url.LocalPath); } protected void USA_Cli
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
为空!如何修复此问题?如果您的类不是从Page或UserControl继承的,那么您可能应该将当前上下文作为参数传递给需要使用它的方法
另外,如果您的类是ASHX页面,那么您需要指示该页面实现。我假设访问
HttpContent.Current的代码正在ASP.NET线程的Sperate线程上运行
如果是这种情况,则HttpContent.Current
将不可用,因此最好将任何依赖对象(如当前区域性)传递到新线程,而不是依赖于对当前HttpContext对象的访问。此代码很小……请进一步解释。这是不可能的“非页面隐藏包装类”?我有一个项目,用于在我的类解决方案中创建一个C#类库(.dll)(.NET Framework 3.5)。在一个类中,我尝试获取当前区域性信息。如何获取它?严格来说不是真的,但这不会有什么好处。我已更新了答案,以表明这可能是您应该做的事情(这样类就不会对执行它的上下文做出任何假设)。