我正在编写一个在缓存中存储对象的 ASP.NET 应用程序。当页面第一次加载时,它会检查缓存中是否有该对象,如果存在,它将使用该对象。如果该对象不存在,它将重新构建它并将其存储在缓存中。由于多个用户可以同时使用此应用程序,因此我尝试将对象存储在缓存中,缓存键为 SessionID。好吧,我注意到当页面回发时,sessionID 会发生变化,所以我需要使用不同的唯一密钥。有什么建议么?我正在考虑使用登录者的用户 ID,但这也不是唯一的,因为您可以使用相同的 ID 多次登录。
我想我刚刚从 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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)