与regenerateExpiredSessionId ="false"的区别和regenerateExpiredSessionId ="true".net

nLL*_*nLL 11 asp.net cookieless

我的理解来自

http://msdn.microsoft.com/en-us/library/system.web.configuration.sessionstatesection.regenerateexpiredsessionid.aspx

regenerateExpiredSessionId ="false "的含义是,如果会话ID过期,如果客户端请求具有相同ID的URL,则不会重新使用它.

和的悲风regenerateExpiredSessionId ="真"是,如果会话ID过期它将被重新使用(回收的),如果客户机请求与相同的id的网址.

但是当我读到帖子时

regenerateExpiredSessionId无法按预期工作

似乎我误解了regenerateExpiredSessionId ="true"的含义.

有人可以解释哪个是对的吗?

小智 14

默认情况下,无Cookie会话中使用的会话ID值将被回收.也就是说,如果使用已过期的会话ID发出请求,则使用随请求提供的SessionID值启动新会话.当多个浏览器使用包含无Cookie会话ID值的链接时,这可能导致无意中共享会话.(如果链接通过搜索引擎,电子邮件或其他程序传递,则会发生这种情况.)通过将应用程序配置为不回收会话标识符,可以减少会话数据共享的可能性.为此,请将sessionState配置元素的regenerateExpiredSessionId属性设置为true.当使用过期的会话ID进行无cookie会话请求时,这会生成新的会话ID.

参考:http://msdn.microsoft.com/en-us/library/ms178581.aspx


blu*_*moo 3

我认为,当人们讨论这个属性时,“重新发行”这个词是有问题的。我看到一些帖子将其解释为“生成新的会话 ID 并将其颁发给客户端”,而其他帖子将其解释为“将过期的会话 ID 分配给新会话并将其颁发给客户端”。我相信 msdn 文档的意思是后一种含义,并且您引用的堆栈溢出帖子错误地将其解释为前一种含义。