asp.net sessionID 在回发时发生变化?
我正在编写一个在缓存中存储对象的 ASP.NET 应用程序。 当页面第一次加载时,它会检查缓存中是否有该对象,如果存在,它将使用该对象。 如果该对象不存在,它将重新构建它并将其存储在缓存中。 由于多个用户可以同时使用此应用程序,因此我尝试将对象存储在缓存中,缓存键为 SessionID。 好吧,我注意到当页面回发时,sessionID 会发生变化,所以我需要使用不同的唯一密钥。 有什么建议么? 我正在考虑使用登录者的用户 ID,但这也不是唯一的,因为您可以使用相同的 ID 多次登录。
I am writing an asp.net app that stored an object in cache. When the page loads the first time, it checks the cache for the object, if it is there, it will use the object. if the object does not exist, it will re-build it and store it in cache. since multiple users can use this app at the same time, i was trying to store the object in cache with the cache key being the SessionID. Well, i noticed that when the page posts back, the sessionID changes, so I will need to use a different unique key. Any suggestions? I was thinking about using the userID of the person logged in, but that is not unique either, since you can login with the same id multiple times.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(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
I think i just found my answer from MSDN (this is a change to 2.0,3.5):
"When using cookie-based session state, ASP.NET does not allocate storage for session data until the Session object is used. As a result, a new session ID is generated for each page request until the session object is accessed. If your application requires a static session ID for the entire session, you can either implement the Session_Start method in the application's Global.asax file and store data in the Session object to fix the session ID, or you can use code in another part of your application to explicitly store data in the Session object."
http://msdn.microsoft.com/en-us/library/system.web.sessionstate.httpsessionstate.sessionid.aspx
回发时会话 ID 不应更改。 asp.net 使用它来做类似的事情。
您能否提供有关该场景的更多信息? 什么类型的数据,为什么/何时尝试“缓存”
更新1:关于它在每次回发时发生的变化,您是否禁用了cookie? 您使用的是哪个版本的 asp.net?
The session id shouldn't be changing on postbacks. It is used by asp.net to do a similar thing.
Can you provide more info on the scenario? what type of data, why/when are you trying to "cache"
Update 1: Regarding it changing on each post back, have you disabled cookies? which version of asp.net are you using?