是否可以将会话 ID 设置为我在 asp.net 中选择的值

Posted

技术标签:

【中文标题】是否可以将会话 ID 设置为我在 asp.net 中选择的值【英文标题】:Is it possible to set session id to a value of my choice in asp.net 【发布时间】:2013-07-24 05:45:51 【问题描述】:

我们正在使用 ASP.Net Framework 4.5 创建一个网站。

我知道使用 SessionManager 为当前 httpContext 生成新 sessionId 的方法。我也相信 sessionId 字段是只读的,不能修改。但是,是否可以创建一个具有我选择的 sessionId 的新会话?

例如,如果我希望当前会话 ID 具有值“ASDFGHIJKLQWERTY”,是否可以创建一个?

客户坚持可以做到。但是,我坚信这是不可能的。我找不到任何证明可以或不能完成的参考。

如果有任何代码或参考资料可以帮助我,我将非常感谢。

【问题讨论】:

我不明白您的客户为什么要您这样做。如果您想在会话中存储另一个 ID,请将其存储在 Session 状态中。 会话 ID 用于跟踪跨系统的信息流。因此,需要将 Id 设置为其中一个系统中以前使用的会话 ID。 【参考方案1】:

是的,SessionIDManager 类可以做到这一点,就像这样:

SessionIDManager Manager = new SessionIDManager();

string NewID = Manager.CreateSessionID(Context);
string OldID = Context.Session.SessionID;
bool redirected = false;
bool IsAdded = false;
Manager.SaveSessionID(Context, NewID,out redirected, out IsAdded);
Response.Write("Old SessionId Is : " + OldID);
if (IsAdded)

    Response.Write("<br/> New Session ID Is : " + NewID);

else

    Response.Write("<br/> Session Id did not saved : ");

【讨论】:

感谢卡尔安德斯。感谢你的帮助。我也在尝试同样的方法。但是由于某种原因..当我尝试为 NewID(硬编码值)提供“Test123”时..它曾经在语句 Manager.SaveSessionID 上失败。虽然不确定原因。但是,当我通过以前生成的 id 之一时......它似乎工作。所以..现在一切都很好。再次感谢。

以上是关于是否可以将会话 ID 设置为我在 asp.net 中选择的值的主要内容,如果未能解决你的问题,请参考以下文章

ASP.NET 用于生成会话 ID 的函数?

将 ASP.NET 会话传递给 jQuery

asp.net cookie、身份验证和会话超时

会话变量立即为空.ASP.net核心

ASP.NET 中的会话固定

从 IIS 获取我托管的 Asp.Net 网站的运行会话计数