我希望有人可以为我澄清这种行为,并解释ASP.NET如何决定何时处理像新会话这样的事情.
A)在Internet Explorer中,我加载了有问题的ASP.NET站点.它开始一个新的会话.
B)如果我转到菜单文件 – 新窗口…它保持在同一个会话中.
C)如果我启动一个新的Internet Explorer实例并加载相同的页面,它将启动一个新的Session.
我对步骤C感到困惑.我希望它是基于我的远程IP的相同会话.
什么是IIS / ASP.NET来决定这是一个新的会话?
它是否正在查看IE的新实例正在使用的远程端口?使用File – New启动新窗口时,它使用与父级相同的远程端口.
解决方法
IIS / ASP.NET中的会话基于具有会话范围的cookie,这意味着它们在浏览器关闭时会被销毁,并且显然它们不会在Internet Explorer的不同进程中共享.
当您使用File>打开新的浏览器窗口时新窗口窗口将通过与第一个窗口相同的进程处理(即相同的iexplorer.exe).当您从开始菜单中获取IE时,您将获得一个新进程,现在您将在任务管理器中拥有两个iexplorer.exe.我认为只有IE 7会产生多个进程.
作为旁注,IE 8每个选项卡/窗口都有一个进程,就像Google Chrome一样.我不知道这些浏览器是否在进程间共享会话cookie,但在使用其中一种浏览器进行测试时,一定要注意这一点.