与 regenerateExpiredSessionId="false" 和 regenerateExpiredSessionId="true" .net 的区
Posted
技术标签:
【中文标题】与 regenerateExpiredSessionId="false" 和 regenerateExpiredSessionId="true" .net 的区别【英文标题】:Difference with regenerateExpiredSessionId="false" and regenerateExpiredSessionId="true" .net 【发布时间】:2010-11-30 04:56:47 【问题描述】:我的理解来自
http://msdn.microsoft.com/en-us/library/system.web.configuration.sessionstatesection.regenerateexpiredsessionid.aspx
regenerateExpiredSessionId="false" 的意思是,如果会话 id 过期,如果客户端请求具有相同 id 的 url,它将不会被重新使用。
regenerateExpiredSessionId="true" 的意义在于,如果会话 id 过期,如果客户端请求具有相同 id 的 url,它将被重新使用(回收)。
但是当我在
上阅读帖子时regenerateExpiredSessionId not working as expected
似乎我误解了 regenerateExpiredSessionId="true" 的含义。
谁能解释一下哪个是对的?
【问题讨论】:
我相信你是对的,我看不出另一篇文章如何反驳这一点。 我知道这个问题已经 5 年了,但我仍然希望看到一个明确的答案来确认或否认上述对此设置的解释。我也觉得有点混乱。 【参考方案1】:我相信当人们讨论这个属性时,“重新发布”这个词是有问题的。我看到一些帖子将其解释为“生成一个新的会话 ID 并将其发布给客户端”,而其他帖子将其解释为“一个过期的会话 ID 被分配给一个新会话并发布给客户端”。我相信 msdn 文档的意思是后者,并且您引用的堆栈溢出帖子错误地将其解释为前者。
【讨论】:
【参考方案2】:默认情况下,无 cookie 会话中使用的会话 ID 值会被回收。也就是说,如果使用已过期的会话 ID 发出请求,则使用随请求提供的 SessionID 值启动新会话。当多个浏览器使用包含无 cookie SessionID 值的链接时,这可能会导致无意共享会话。 (如果链接通过搜索引擎、电子邮件或其他程序传递,则可能会发生这种情况。)您可以通过将应用程序配置为不回收会话标识符来减少共享会话数据的机会。为此,请将 sessionState 配置元素的 regenerateExpiredSessionId 属性设置为 true。当使用过期的会话 ID 发出无 cookie 会话请求时,这会生成一个新的会话 ID。
参考:http://msdn.microsoft.com/en-us/library/ms178581.aspx
【讨论】:
以上是关于与 regenerateExpiredSessionId="false" 和 regenerateExpiredSessionId="true" .net 的区的主要内容,如果未能解决你的问题,请参考以下文章