这是一个ASP.NET MVC项目。我正在尝试从会话中检索值,并且它始终返回null。
SaveToSession
和GetFromSession
方法位于单独的帮助器类中。
单击提交按钮后,它将调用controller方法,然后调用helper方法以将数据保存在会话中。
另一次锚定标记单击(具有控制器路径)将命中同一控制器,该控制器调用helper方法以从会话中获取数据。这是数据始终为空的地方。
这些是我的帮助器类中的方法
public static void SaveDataInSession(string sessionName, IEnumerable<Item> lstData)
{
System.Web.HttpContext.Current.Session[sessionName] = lstData;
}
public static void GetDataFromSession(string sessionName, out IEnumerable<Item> lstData)
{
lstData = null;
var test = System.Web.HttpContext.Current.Session; //This session has a new SessionID and hence does not have the data.
if (System.Web.HttpContext.Current.Session[sessionName] != null)
{
// it never comes into this block
}
}
在调试过程中,可以看到数据已保存到会话中,就像在键列表中看到会话名称一样。
相同的代码在另一个ASP.NET MVC项目中运行良好。我检查了该项目的web.config
文件是否有任何与会话相关的条目,也没有。
更新:我观察到,当保存数据时,生成的会话ID是不同的,而在获取数据时,它具有另一个ID。我认为这可能是原因,但是当我什至不刷新页面时为什么要创建新的会话ID。该如何解决?
System.Web.Mvc
版本是5.2.3.0