如何根据 SessionID 恢复 Session?
How do I recover a Session based on the SessionID?
上下文是:
我需要将 SessionID(将被加密)发送到应用程序,然后应用程序保存会话 ID,并在下一次查询时应用程序将 SessionID 发回给我,这样我就可以使用存储的会话变量。
所以 HttpContext.Current.Session.SessionID
给了我当前的 SessionID。
但是...如何根据 SessionID 恢复 Session?
P.S。我知道这是这个未回答问题的重复:How do I get a session by SessionID in C# 所以如果没有办法从 SessionID 检索会话,我会问是否有另一种方法可以实现。
据我所知,没有 public API 可用于加载基于 session ID 的 session(我已经询问 question here, as well). You can hack it using reflection,但这只有在您的站点处于完全信任的环境中并且您可以接受使用反射的性能影响时才有效。
正如评论中指出的那样,session 状态通常由 cookie 驱动(默认名为 "ASP.NET_SessionId")。如果您将 "app"(我假设您指的是远程应用程序)的请求中的 cookie 传递给服务器,那么您只需调用 HttpContext.Current.Session
即可访问 session 状态服务器端。您只需将 cookie 添加到应用程序请求的 headers 中即可。
但是,我不认为 session 状态是您的方案所追求的持久性机制。与其处理 cookie,不如以持久格式(例如文件或数据库)存储您的状态并使用 GUID 或其他唯一标识符根据通过 URL 传递的 ID 访问它更有意义.
正如 Alexi 指出的那样,另一种可能性是构建您自己的 session state provider,您可以在其中放置自己的后门以访问原始数据,但这需要相当多的工作才能完成那关了。
上下文是: 我需要将 SessionID(将被加密)发送到应用程序,然后应用程序保存会话 ID,并在下一次查询时应用程序将 SessionID 发回给我,这样我就可以使用存储的会话变量。
所以 HttpContext.Current.Session.SessionID
给了我当前的 SessionID。
但是...如何根据 SessionID 恢复 Session?
P.S。我知道这是这个未回答问题的重复:How do I get a session by SessionID in C# 所以如果没有办法从 SessionID 检索会话,我会问是否有另一种方法可以实现。
据我所知,没有 public API 可用于加载基于 session ID 的 session(我已经询问 question here, as well). You can hack it using reflection,但这只有在您的站点处于完全信任的环境中并且您可以接受使用反射的性能影响时才有效。
正如评论中指出的那样,session 状态通常由 cookie 驱动(默认名为 "ASP.NET_SessionId")。如果您将 "app"(我假设您指的是远程应用程序)的请求中的 cookie 传递给服务器,那么您只需调用 HttpContext.Current.Session
即可访问 session 状态服务器端。您只需将 cookie 添加到应用程序请求的 headers 中即可。
但是,我不认为 session 状态是您的方案所追求的持久性机制。与其处理 cookie,不如以持久格式(例如文件或数据库)存储您的状态并使用 GUID 或其他唯一标识符根据通过 URL 传递的 ID 访问它更有意义.
正如 Alexi 指出的那样,另一种可能性是构建您自己的 session state provider,您可以在其中放置自己的后门以访问原始数据,但这需要相当多的工作才能完成那关了。