ASP.Net购物车-重复的会话ID
有人能告诉我这里发生了什么事吗?我在一个购物车网站的两台不同的机器、两个不同的浏览器上得到了重复的会话ID 我甚至用一个300个字符的随机字符串生成了一个新的会话id,但它们仍然被复制 这是新代码。。。只需取出旧代码的SyncLock内容:ASP.Net购物车-重复的会话ID,asp.net,.net,e-commerce,Asp.net,.net,E Commerce,有人能告诉我这里发生了什么事吗?我在一个购物车网站的两台不同的机器、两个不同的浏览器上得到了重复的会话ID 我甚至用一个300个字符的随机字符串生成了一个新的会话id,但它们仍然被复制 这是新代码。。。只需取出旧代码的SyncLock内容: Dim _key As String = String.Empty SyncLock _locker _key = Guid.NewGuid().ToString() Session("Identifier")
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”)不是Session ID,但是,我们过去使用Session.SessionID作为“标识符”,并且它被复制了为什么要生成自己的
SessionID
?ASP.NET和浏览器可以在开箱即用的情况下完成这项工作,可能比您或我做得更好 我建议您改用此选项:
我找到了解决这个问题的办法 如果我将web.config中的会话管理器设置为我的类,那么它就工作了
<sessionState mode="InProc" cookieless="false" timeout="20" sessionIDManagerType="o7th.Projects.Core.SessionManager"/>
我采取了一种不同的方法 我创建了一个带有标识的表,每次需要会话id时,都会插入并存储在会话变量中
我认为随机生成器不可信会话是您自己生成的?您可以发布生成会话的代码吗?您需要发布一些代码,以便我们可以看到您的代码在做什么!会话ID是如何存储的?用于使用内置的session.SessionID,但是,我刚刚添加了一个同步锁,以查看这是否可以解决问题,我还关闭了IIS中.aspx页面的输出缓存。我们使用session.SessionID作为“购物车”的标识符。但是我们开始在机器上进行复制,所以我们开始生成一个随机长度的随机字母数字字符串,它仍然存在。我已经到处寻找这个问题,我看到的似乎是,我不是唯一一个…但是,我理解,我认为有相当大的几率,一个随机介于150到300个字符之间的随机字符串就可以做到这一点;)除此之外,什么都不管用。新Guid无效,会话ID无效。。。他们都生产duplicates@rickschott有许多关于生成重复会话id的报告,如果随机生成某个会话id,则无论使用何种技术,都有复制的机会(人员意见)