如何根据SessionID恢复会话



上下文为:我需要将SessionID(将被封装)发送到应用程序,然后应用程序保存会话ID,在下一次查询时,应用程序将SessionID发送回我,以便我可以使用存储的会话变量。

所以HttpContext.Current.Session.SessionID给了我当前的SessionID。

但是。。。如何根据SessionID恢复会话?

附言:我知道这是一个未回答问题的重复:我如何在C#中通过SessionID获得会话,因此,如果没有办法从SessionID检索会话,我会问是否有其他方法可以实现这一点。

据我所知,没有公共的API可用于加载基于会话ID的会话(我在这里也问过这个问题)。你可以使用反射来破解它,但只有当你的网站处于完全信任的环境中,并且你可以接受使用反射的性能影响时,这才会起作用。

正如评论中所指出的,会话状态通常由cookie(默认名称为"ASP.NET_SessionId")驱动。如果您将"应用程序"(我假设您指的是远程应用程序)的请求中的cookie传递给服务器,则只需在服务器端调用HttpContext.Current.Session即可访问会话状态。您只需要将cookie添加到应用程序请求的标头中,它就可以工作。

然而,我不认为会话状态是您在场景中所追求的持久性机制。与其处理cookie,不如将您的状态存储在文件或数据库等持久格式中,并根据通过URL传递的ID使用GUID或其他唯一标识符来访问它。

正如Alexi所指出的,另一种可能性是建立自己的会话状态提供程序,您可以将自己的后门放在该程序中以访问原始数据,但要实现这一点需要相当多的工作。

相关内容

  • 没有找到相关文章

最新更新