【问题标题】:asp.net sessionID changing on postbacks?asp.net sessionID 在回发时更改?
【发布时间】:2010-10-10 11:44:42
【问题描述】:

我正在编写一个将对象存储在缓存中的 asp.net 应用程序。当页面第一次加载时,它会检查对象的缓存,如果存在,它将使用该对象。如果对象不存在,它将重新构建它并将其存储在缓存中。由于多个用户可以同时使用这个应用程序,我试图将对象存储在缓存中,缓存键是 SessionID。好吧,我注意到当页面回发时,sessionID 发生了变化,所以我需要使用不同的唯一键。有什么建议?我正在考虑使用登录人的用户 ID,但这也不是唯一的,因为您可以多次使用相同的 ID 登录。

【问题讨论】:

    标签: asp.net caching sessionid


    【解决方案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

      【讨论】:

        猜你喜欢
        • 2012-03-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-03-30
        • 1970-01-01
        相关资源
        最近更新 更多