ASP.NET Web应用程序如何在多个浏览器/选项卡中跟踪会话?例如,如果我登录到某个站点,当我打开一个新的浏览器实例时,它知道(或假设)我仍然是同一个用户,因此它是同一个会话,并且在我访问时仍使用我的凭据新浏览器实例中的网站。但是当我在IE中启动新会话时(在文件菜单中),它会使用新会话。
这是如何完成的?ASP.NET和在IE中打开新会话实际上做了什么(我的意思是内部,我知道它会启动一个新的会话)? WebForms和ASP.NET MVC是否相同?
答案 0 :(得分:3)
如评论中所述,ASP.NET使用会话cookie跟踪您的会话。
根据this post on IEBlog,当您浏览文件 - >时,新窗口将不会与现有窗口共享会话Cookie。新会议。这就是为什么你不会在新窗口中登录。
如果您有兴趣,该博客会更多地解释会话合并的内容。
答案 1 :(得分:2)
我从未见过"新会议"在IE中打开!
您的会话本质上是服务器和浏览器之间的ID(尝试使用response.write('Session.SessionID');
) - 这个ID由服务器为会话保留,直到超时(通常为20分钟),如果您是使用会话cookie,然后cookie数据存储在该ID下的服务器内存中,而不是持久性cookie,这些cookie作为文本文件存储在浏览器本地并根据请求发送到服务器。
对于ASP.net身份验证,有一个AUTH
cookie,这可能是持久的 - 您希望登录在新的浏览会话中保持不变 - 或者不需要登录每个会话。
http://support.microsoft.com/kb/910443
对于这个问题,这个会话ID在IE中的所有选项卡和浏览实例中保持不变,除非您启动一个新会话,该会话将具有服务器的不同会话ID,因此会话详细信息等...