asp.net sessionID 在回发时更改?
Posted
技术标签:
【中文标题】asp.net sessionID 在回发时更改?【英文标题】:asp.net sessionID changing on postbacks? 【发布时间】:2010-10-10 11:44:42 【问题描述】:我正在编写一个将对象存储在缓存中的 asp.net 应用程序。当页面第一次加载时,它会检查对象的缓存,如果存在,它将使用该对象。如果对象不存在,它将重新构建它并将其存储在缓存中。由于多个用户可以同时使用这个应用程序,我试图将对象存储在缓存中,缓存键是 SessionID。好吧,我注意到当页面回发时,sessionID 发生了变化,所以我需要使用不同的唯一键。有什么建议?我正在考虑使用登录人的用户 ID,但这也不是唯一的,因为您可以多次使用相同的 ID 登录。
【问题讨论】:
【参考方案1】:回发时会话 ID 不应更改。 asp.net 使用它来做类似的事情。 你能提供更多关于这个场景的信息吗?什么类型的数据,为什么/何时尝试“缓存”
更新 1: 关于每次回帖都会更改,您是否禁用了 cookie?您使用的是哪个版本的 asp.net?
【讨论】:
【参考方案2】:我想我刚刚从 MSDN 找到了我的答案(这是对 2.0、3.5 的更改):
"当使用基于 cookie 的会话状态时,ASP.NET 在使用 Session 对象之前不会为会话数据分配存储空间。因此,在访问会话对象之前,会为每个页面请求生成一个新的会话 ID。如果您的应用程序需要整个会话的静态会话 ID,您可以在应用程序的 Global.asax 文件中实现 Session_Start 方法并将数据存储在 Session 对象中以修复会话 ID,或者您可以在您的另一部分中使用代码应用程序在 Session 对象中显式存储数据。”
http://msdn.microsoft.com/en-us/library/system.web.sessionstate.httpsessionstate.sessionid.aspx
【讨论】:
以上是关于asp.net sessionID 在回发时更改?的主要内容,如果未能解决你的问题,请参考以下文章