Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ASP.NET如何在多个浏览器/选项卡中跟踪会话?_Asp.net_Asp.net Mvc_Session - Fatal编程技术网

ASP.NET如何在多个浏览器/选项卡中跟踪会话?

ASP.NET如何在多个浏览器/选项卡中跟踪会话?,asp.net,asp.net-mvc,session,Asp.net,Asp.net Mvc,Session,ASP.NET web应用程序如何在多个浏览器/选项卡中跟踪会话?例如,如果我登录到某个站点,当我打开一个新的浏览器实例时,它知道(或假设)我仍然是同一个用户,因此,当我在新的浏览器实例中访问该站点时,它是同一个会话,并且仍然使用我的凭据。但当我在IE(文件菜单)中启动新会话时,它会使用一个新会话 ASP.NET是如何做到这一点的?在IE中打开一个新会话实际上做了什么(我是说在内部,我知道它将启动一个新会话)?WebForms和ASP.NET MVC也一样吗?我从来没见过IE中打开“新会话” 您

ASP.NET web应用程序如何在多个浏览器/选项卡中跟踪会话?例如,如果我登录到某个站点,当我打开一个新的浏览器实例时,它知道(或假设)我仍然是同一个用户,因此,当我在新的浏览器实例中访问该站点时,它是同一个会话,并且仍然使用我的凭据。但当我在IE(文件菜单)中启动新会话时,它会使用一个新会话

ASP.NET是如何做到这一点的?在IE中打开一个新会话实际上做了什么(我是说在内部,我知道它将启动一个新会话)?WebForms和ASP.NET MVC也一样吗?

我从来没见过IE中打开“新会话”

您的会话本质上是服务器和浏览器之间的一个ID(试试看,
response.write('session.SessionID');
)-服务器在会话超时(通常为20分钟)之前一直持有该ID,如果您使用的是会话cookie,则cookie数据将以该ID而不是持久cookie存储在服务器内存中,它们存储为浏览器本地的文本文件,并根据请求发送到服务器

对于ASP.net身份验证,有一个
AUTH
cookie,它可以是持久性的-您希望登录即使在新的浏览会话中也保持不变-或者不保持不变,并且每个会话都需要登录


对于这个问题,此会话ID将在IE中的所有选项卡和浏览实例中保持,除非您启动一个新会话,该会话将具有不同的服务器会话ID,因此会有新的会话详细信息等。

如注释中所述,ASP.NET使用会话cookie跟踪您的会话

根据,当您通过文件->新建会话时,新窗口将不会与现有窗口共享会话cookie。这就是为什么你不会在新窗口中登录


如果您感兴趣,该博客将进一步解释什么是会话合并。

您确切的意思是哪个菜单项?无论如何,会话是用cookies处理的。@Stijn:在IE中,文件菜单中有一个“新建会话”菜单项。正如我所读到的,会话可以使用cookie,也可以不使用cookie,但我的问题涉及ASP.NET如何确定新浏览器实例是新的会话还是现有的会话。ASP.NET不会。浏览器决定选项卡/窗口/会话是否共享会话cookie或具有独立集(现在大多数浏览器将在选项卡和窗口之间共享会话cookie)。当一个会话在多个单独的页面上执行操作时,ASP.Net通常会感到困惑。@Damien_异端者:你能提供一个来源吗?我希望能够进一步阅读,请把它放在一个答案中(而不是评论),这样我就可以把它标记为答案。谢谢你的回复。如果允许多个答案,我也会将其标记为答案,但Stijn已经在评论中为我提供了答案,我只是要求他以答案的形式给出答案。。。谢谢你,我会投票赞成的。