1

谁能告诉我这里发生了什么?我在购物车网站中的 2 台单独的机器、2 个不同的浏览器中获得重复的会话 ID?

我已经用 300 个字符的随机字符串生成了一个新的会话 ID,但它们仍然被重复

这是新代码......只需为旧代码取出 SyncLock 内容:

    Dim _key As String = String.Empty
    SyncLock _locker
        _key = Guid.NewGuid().ToString()
        Session("Identifier") = Validations.GeneratePassword(150, 300)
        Session("SessionID") = _key
        Session("SiteID") = "F2630237-E355-4C8A-947E-BBAC97ECA550"
        Session("HomePage") = 13
    End SyncLock

是的,我知道 Session("SessionID") 不是会话 ID,但是,我们曾经使用 Session.SessionID 作为“标识符”,并且它被重复了

4

3 回答 3

2

为什么要自己生成SessionID
ASP.NET 和浏览器开箱即用,可能比你或我更好。

我建议你改用这个:

HttpSessionState.SessionID

于 2012-04-24T14:10:14.707 回答
1

我宁愿采用不同的方法

我创建了一个带有身份的表,每次需要会话 id 时,都会进行插入并将其存储在会话变量中

我认为随机生成器不可信

于 2016-07-05T04:48:03.633 回答
0

我找到了解决方案。

如果我将 web.config 中的会话管理器设置为我的类,并且它有效

<sessionState mode="InProc" cookieless="false" timeout="20" sessionIDManagerType="o7th.Projects.Core.SessionManager"/>
于 2012-06-27T17:58:16.620 回答