6

我希望有人可以为我澄清这种行为,并解释 ASP.NET 是如何决定何时处理类似新会话的东西。

A) 在 Internet Explorer 中,我加载了相关的 ASP.NET 站点。它开始一个新的会话。
B)如果我去菜单文件 - 新窗口......它保持在同一个会话中。
C) 如果我启动一个新的 Internet Explorer 实例并加载相同的页面,它会启动一个新的会话。

我对步骤 C 感到困惑。我希望它是基于我的远程 IP 的同一个会话。
IIS / ASP.NET 正在做什么来确定这是一个新会话?它是否正在查看新的 IE 实例正在使用的远程端口?当您使用 File - New 打开一个新窗口时,它使用与父级相同的远程端口。

4

4 回答 4

13

IIS/ASP.NET 中的会话基于具有会话范围的 cookie,这意味着它们会在浏览器关闭时被销毁,并且显然它们不会在 Internet Explorer 的不同进程中共享。

当您使用 File > New Window 打开一个新的浏览器窗口时,该窗口将由与第一个相同的进程处理(即相同的 iexplorer.exe)。当你从开始菜单启动 IE 时,你会得到一个新进程,你现在在任务管理器中有两个 iexplorer.exe。我认为只有 IE 7 会产生多个进程。

附带说明一下,IE 8 每个选项卡/窗口都有一个进程,就像 Google Chrome 一样。我不知道这些浏览器是否在进程之间共享会话 cookie,但在使用其中一种浏览器进行测试时,一定要牢记这一点。

于 2008-11-20T00:06:23.613 回答
4

默认情况下,ASP.NET 通过 cookie 跟踪会话。一个新的 IE 实例没有会话 cookie,从而导致一个新的会话。但是,在现有 IE 窗口中使用 File -> New Window 将创建一个具有与“父”相同 cookie 的新窗口,从而允许 ASP.NET 使用现有会话。

于 2008-11-20T00:00:37.837 回答
0

我想知道新的 IE 实例是否会具有与案例 B 相同的 cookie,虽然它是一个新窗口,但它使用相同的进程。通常在 cookie 或查询字符串中有一个用于将会话映射到各种客户端的值。

于 2008-11-19T23:57:15.723 回答
0

似乎会话数据正在每个进程缓存。A) 和 B) 存在于同一个进程中,而启动 IE 的新实例将创建一个新进程。

于 2008-11-20T00:02:25.790 回答