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 のさまざまなプロセス内で共有されません。

[ファイル] > [新しいウィンドウ] で新しいブラウザー ウィンドウを開くと、ウィンドウは最初のウィンドウと同じプロセス (つまり、同じ iexplorer.exe) によって処理されます。スタート メニューから IE を起動すると、新しいプロセスが作成され、タスク マネージャーに 2 つの iexplorer.exe が表示されます。複数のプロセスを生成するのは IE 7 だけだと思います。

補足として、IE 8 には、Google Chrome のように、タブ / ウィンドウごとに 1 つのプロセスがあります。これらのブラウザーがプロセス間でセッション cookie を共有しているかどうかはわかりませんが、これらのブラウザーのいずれかを使用してテストする場合は、これを念頭に置いておく必要があります。

于 2008-11-20T00:06:23.613 に答える
4

既定では、ASP.NET は Cookie を介してセッションを追跡します。新しい IE インスタンスにはセッション Cookie がないため、新しいセッションになります。ただし、既存の IE ウィンドウから [ファイル] -> [新しいウィンドウ] を使用すると、「親」と同じ 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 に答える