繁体   English   中英

如何从不同的地方访问同一个会话?

[英]How to access the same session from different places?

我有一个正在使用的视图

Session["Something"] = 1;

我在类库项目中有一个类,它试图从会话中获取此值

HttpContext.Current.Session["Something"]

但它返回null

public ActionResult Index()
{
    Session["Something"] = 1;
    var fromLib = (new MyLibClass()).GetSession("Something"); // null
    var fromHere = Session["Something"]; // 1
}

// Class library project
public object GetSession(string key)
{
    return HttpContext.Current.Session[key];
}

如何从会话中获取价值? 或者有没有办法保存值并在另一个地方检索(没有数据库或系统文件)

您不需要Session对象。

虽然Session适用于在asp.net应用程序中保存变量,但您可以实现自己的会话对象,以便在类库中使用,这些库轻巧,快速且代码内部:

Dictionary<string, object> MySession = new Dictionary<string, object>();
MySession.Add("VariableName", myObject);
MyLib.Pass(MySession);

如果可能的话,尝试使其更具体,即如果您只是将MyClass传递到您的库,那么:

Dictionary<string, MyClass> MySession = new Dictionary<string, MyClass>();

有两个会话

Session (refers to the view session)
HttpContext.Current.Session (refers to context session)

使用HttpContext.Current.Session无处不在,因为它们是相同的。 我创建了一个类来帮助我按照我想要的方式访问会话值,所以我可以调用它而不用担心正确的会话。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM