2008-11-19 7 views
6

Ich hoffe, jemand kann dieses Verhalten für mich klären und erklären, wie ASP.NET entscheidet, wann etwas wie eine neue Sitzung behandelt werden soll.ASP.NET und Sitzungen - Neue Browserinstanz versus neues Browserfenster

A) In Internet Explorer lade ich die betreffende ASP.NET-Site. Es startet eine neue Sitzung.
B) Wenn ich im Menü Datei - Neues Fenster ... gehe, bleibt es innerhalb der gleichen Sitzung.
C) Wenn ich eine neue Instanz von Internet Explorer starte und dieselbe Seite lade, wird eine neue Sitzung gestartet.

Ich bin verwirrt durch Schritt C. Ich erwarte, dass es die gleiche Sitzung basierend auf meiner Remote-IP ist.
Was macht IIS/ASP.NET, um zu entscheiden, dass dies eine neue Sitzung ist? Betrachtet es meinen Remote-Port, den die neue Instanz von IE verwendet? Wenn Sie ein neues Fenster mit Datei - Neu erstellen, verwendet es den gleichen Remote-Port wie das übergeordnete Element.

Antwort

13

Sitzungen in IIS/ASP.NET basieren auf Cookies mit einem Sitzungsumfang, was bedeutet, dass sie beim Schließen des Browsers zerstört werden und anscheinend nicht in verschiedenen Prozessen von Internet Explorer gemeinsam genutzt werden.

Wenn Sie ein neues Browserfenster mit Datei> Neues Fenster öffnen, wird das Fenster mit dem gleichen Prozess wie der erste (d. H. Der gleiche iexplorer.exe) behandelt. Wenn Sie IE aus dem Startmenü aufrufen, erhalten Sie einen neuen Prozess, und Sie haben nun zwei iexplorer.exe im Task-Manager. Ich denke, dass nur IE 7 mehrere Prozesse hervorbringen wird.

Als Randbemerkung, IE 8 wird einen einzigen Prozess pro Registerkarte/Fenster haben, wie Google Chrome hat. Ich weiß nicht, ob diese Browser Sitzungscookies unter den Prozessen teilen, aber es ist sicherlich etwas, das man beim Testen mit einem dieser Browser beachten sollte.

+1

IE6 hat es auch getan. Nicht sicher über 5. – GalacticCowboy

+1

IE8 teilt Sitzungen zwischen Registerkarten und Fenstern, es sei denn, Sie verwenden die Option "Neue Sitzung" im Dateimenü. Dies hat auf einigen unserer Websites zu Verhaltensauffälligkeiten geführt, da Benutzer zu IE 8 konvertiert wurden. – Rozwel

0

Ich würde mich wundern, wenn die neue IE-Instanz die gleichen Cookies haben würde, die in Fall B passieren, wo, während es ein neues Fenster ist, es den gleichen Prozess verwendet. Normalerweise befindet sich im Cookie oder in der Abfragezeichenfolge ein Wert, der zum Zuordnen von Sitzungen zu verschiedenen Clients verwendet wird.

4

Standardmäßig verfolgt ASP.NET Sitzungen über Cookies. Eine neue IE-Instanz verfügt nicht über den Sitzungscookie, was zu einer neuen Sitzung führt. Wenn Sie jedoch Datei -> Neues Fenster aus einem vorhandenen IE-Fenster verwenden, wird ein neues Fenster mit den gleichen Cookies wie das "Eltern" erstellt, sodass ASP.NET die vorhandene Sitzung verwenden kann.

+1

Ich sollte auch beachten, dass IIS und ASP.NET nicht wirklich etwas mit dem Unterschied in Verhalten zu tun haben, die Sie bemerken. Beachten Sie auch, dass Sitzungen nicht auf Remote-IP-Adressen beruhen, die für viele Benutzer (z. B. einen Proxy) häufig identisch sind. –

+0

Ihr genau richtig über die Remote-IP ... sollte daran gedacht haben. Ist Session-Cookie (im Gegensatz zu regulären Cookies) Teil der HTML-Spezifikation? – BuddyJoe

+0

Ich glaube nicht, dass es ein Teil der Spezifikation ist, ein Session-Cookie unterscheidet sich nicht wirklich von jedem anderen Cookie, außer dass sein Wert eine eindeutige Kennung enthält, die auch für ASP.NET "bekannt" ist. Dieser Cookie wird typischerweise als HTTP-Header gemäß der HTTP-Spezifikation übertragen. –

0

Es scheint, dass die Sitzungsdaten pro Prozess zwischengespeichert werden. A) und B) existieren in demselben Prozess, während das Starten einer neuen Instanz von IE einen neuen Prozess erzeugt.

Verwandte Themen