繁体   English   中英

如何根据SessionID恢复会话?

[英]How do I recover a Session based on the SessionID?

上下文是:我需要将SessionID(将被加密)发送给应用程序,然后该应用程序保存该会话ID,并在下一次查询时,该应用程序将我的SessionID发送回给我,以便我可以使用存储的Session变量。

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

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

PS我知道这是一个未解决问题的重复: 我如何在C#中通过SessionID获取会话,所以如果没有办法从SessionID检索Session,那么我会问是否还有另一种方法可以实现那。

据我所知,尚无可用于基于会话ID加载会话的公共API(我也在这里提出了问题 )。 您可以使用反射破解它 ,但是只有在您的站点处于完全信任的环境中并且您可以确定使用反射对性能的影响时,这种方法才能起作用。

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

但是,我不认为会话状态是您针对场景所追求的持久性机制。 与其处理Cookie,不如将状态存储为文件或数据库之类的持久格式,并根据通过URL传递的ID使用GUID或其他唯一标识符来访问它,这更有意义。

正如Alexi所指出的,另一种可能性是建立自己的会话状态提供程序 ,您可以将其放入自己的后门以访问原始数据,但是要实现这一目标需要大量的工作。

暂无
暂无

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

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