Laden...

Sessions: unterschieliches verhalten von IE und FF

Erstellt von kaloon vor 16 Jahren Letzter Beitrag vor 16 Jahren 1.779 Views
K
kaloon Themenstarter:in
124 Beiträge seit 2006
vor 16 Jahren
Sessions: unterschieliches verhalten von IE und FF

Hallo liebe Community,

als Einstieg in das Thema Sessions habe ich folgenden Threadgefunden und das Beispiel von norman_timo getestet:

Zum Ausprobieren kannst Du mal folgendes Szenario aufbauen:

  • Ein ASP.NET Projekt erstellen (mit VisualStudio).
  • Dort ein Button und ein Label einfügen.
  • Im Button-Event den Code Session.Add("ClientHatGeklickt", "Jawollja"); hinterlegen
  • Das Label zeigt nun folgendes an (z.B. in Page_Load implementiert):
    C#-Code:
    if (Session["ClientHatGeklickt"] != null)
    {
    Label1.Text = "Client hat geklickt!";
    }
    else
    {
    Label1.Text = "Bis jetzt noch nix!";
    }

Dann starte dein ASP.NET Projekt einmal und klicke nix. Daraufhin startest Du Dein Projekt ein 2. Mal mit einer anderen Browser-Instanz. Auf einem Projekt klickst Du nun auf den Button (beim anderen NICHT!).

wenn ich das Projekt kompiliere und am IIS ein virtuelles Verzeichnis mit dem Projekt einrichte und das ganze wie beschrieben mit 2 IE(version 6, xp sp2) teste, funktioniert es wunderbar, auch die Kombination IE und FF (v 2.0.0.4) funktioniert. wenn ich die Seite aber in zwei verschiedenen FF Fenstern öffne, in einem den button betätige und aschließend bei beiden Fenstern die Seite aktualisiere, steht bei beiden "Client hat geklickt!".

[Edit]
ich habe jetzt auch opera 9.21 ausprobiert: selbes Verhalten wie FF
außerdem ist mir folgendes aufgefallen: sobald der IE geschlossen und die Seite nach einem Neustart geladen wird, steht wieder "Bis jetzt noch nix". wenn ich nach dem Klicken des Buttons in FF oder Opera den Browser schließe, neu starte und die Seite lade, steht trotzdem "Client hat geclicket" (solange das Cookie nicht abgelaufen ist)
[/Edit]

Dass würde doch bedeuten, das beim IE mehrere Browser-Instanzen als mehrere "Clients" gesehen werden, womit auch mehrere Sessions erzeugt werden, wohingegen FF für einen Rechner immer nur eine Session erzeugt?

Wieso? kann jemand dieses Verhalten erklären oder zumindest reproduzieren?

lg
martin

5.941 Beiträge seit 2005
vor 16 Jahren

Hallo Martin

Das ist wirklich höchst interessant, müsste ich auch einmal testen.
Noch als Anmerkung, wenn du per Click eine Session setzt und je nach gesetzter Session im Page_Load z.B. etwas in ein Label schreibst, passiert dies erst beim zweiten Aufruf der Seite.
Beziehungsweise nachdem du ein zweites Mal auf den Button geklickt, oder ein Refresh gemacht hast.

Der Grund? Der Lebenszyklus innerhalb einer ASP.NET Seite:

Page_Load
Button_Click
Page_PreRender

Du musst in diesem Fall das Label im PreRender Eventhandler setzen, dann klappts auch beim ersten Mal.

Gruss Peter

--
Microsoft MVP - Visual Developer ASP / ASP.NET, Switzerland 2007 - 2011

K
kaloon Themenstarter:in
124 Beiträge seit 2006
vor 16 Jahren

Hallo Peter,

zu deiner Anmerkung: über den Lebenszyklus einer ASP.NET Seite bin ich schon beim Thema Sessions, gestoßen, und ich weiß, dass der Quellcode besser sein könnte 🙂

Das ist wirklich höchst interessant, müsste ich auch einmal testen.

Ja, wäre interessant ob du es reproduzieren kannst

ich habe mir die einzelnen Session IDs angeschaut, demnach erzeugen zwei IE Instanzen auch zwei unterschiedliche Instanzen. zwei FF oder opera Instanzen erhalten die gleiche Session ID. Wieso aber ist das so?

Z
43 Beiträge seit 2007
vor 16 Jahren

Ich habe zwar keine Ahnung, aber ich stelle mir die Frage, ob es bei zwei FF oder zwei Opera um 2x geöffnete FF-Fenster oder ob es 2x geöffnete Tabs sind. Vielleicht liegt darin der Unterschied.

I
256 Beiträge seit 2005
vor 16 Jahren

Die Browser erstellen Session Cookies und schicken das an den Server.

Kann schon sein das 2 FF genau das selbe Sessioncookie erzeugen, wäre aber eine arge Sache.

K
kaloon Themenstarter:in
124 Beiträge seit 2006
vor 16 Jahren

guten morgen

zen schrieb:

Ich habe zwar keine Ahnung, aber ich stelle mir die Frage, ob es bei zwei FF oder zwei Opera um 2x geöffnete FF-Fenster oder ob es 2x geöffnete Tabs sind. Vielleicht liegt darin der Unterschied.

es waren 2x geöffnete FF fenster, allerdings ist das verhalten bei 2x tabs das selbe

ifoko schrieb

Kann schon sein das 2 FF genau das selbe Sessioncookie erzeugen, wäre aber eine arge Sache.

ich habe mir einfach die session ID ausgeben lassen, die waren bei 2x IE fenstern unterschiedlich (wie erwartet), bei 2x FF fenstern jedoch gleich

konnte jemand das beschriebene verhalten reproduzieren?

lg
martin

M
402 Beiträge seit 2005
vor 16 Jahren

Hi Kaloon!

Zuerst wollte ich Dir hier noch groß widersprechen, nach einem Test
der mir 8o die Augen geöffnet hat, muß ich aber leider zugeben,
dass bei mir der "Fehler" ebenso auftritt.

Bei mir handelt es sich sogar um eine PHP-Webapplikation.
Beide FF-Instanzen melden "eingeloggt" obwohl nur bei einer ein Login
durchgeführt wurde.

Es scheint als hätte der FF nur ein Session-Cookie für die Domain/Pfad und verwendet das für alle Instanzen.

lg
M@TUK

K
kaloon Themenstarter:in
124 Beiträge seit 2006
vor 16 Jahren

hi M@ATUK,

Zuerst wollte ich Dir hier noch groß widersprechen, nach einem Test
der mir geschockt die Augen geöffnet hat, muß ich aber leider zugeben,
dass bei mir der "Fehler" ebenso auftritt.

danke für's testen.

Z
43 Beiträge seit 2007
vor 16 Jahren

Mir ist noch was eingefallen.

Wenn man bei PHP eine Session erstellt, dann wird diese ja einmal in eine Datei auf dem Server gespeichert und dann als Cookie. Und der wird ja vergleicht, damit nicht bei jedem Aufruf eine neue Session erstellt werden muss.

Zusätzlich, ist es bei vBulletin oder wBB so, dass die ja sozusagen ein eigenes SessionSystem benutzen und nicht das PHPinterne. Die erstellen die Session in Verbindung mit User-Agent, Zeit und einer Zufallszahl und vllt noch mehr, weiß jetzt nicht mehr.

Vielleicht sind das noch ein paar Anregungen bei dem Problem 😁

Gruß
Zen