2016-07-11 10 views
0

Ich habe folgenden JavaScript-Code in der Layout-Seite meiner ASP.NET MVC-Anwendung, um eine browserweite ID für einen Benutzer als Cookie zu speichern, so dass ich auf Informationen in der Sitzung auf der Serverseite zugreifen kann der jeweilige Benutzer.JavaScript: sessionStorage verliert Artikel

In den meisten Fällen funktioniert das.

Aber in einigen zufälligen Fällen für einige Benutzer die sessionStorage.getItem("TestWindowId") gibt null auf der gleichen Browser-Registerkarte wurde es definitiv zuvor festgelegt. In diesen Fällen verliere ich die Id und obwohl die Verbindung zu den Benutzerinformationen auf der Serverseite. Laut meinen Protokollen wurde der sessionStorage-Eintrag festgelegt und in einem Callback-Anruf innerhalb derselben Sekunde war der sessionStorage des gleichen Browser-Tabs wieder null.

Was kann dazu führen, dass sessionStorage auf der Clientseite Elemente verliert?

Oder gibt es einen Fehler in meiner Logik?

UPDATE:

Es gab ein Problem in meinem Denken Muster. Das Problem besteht nicht darin, dass das sessionStorage-Element gelöscht wurde, sondern dass der falsche Cookie-Wert mit der Anforderung an den Server gesendet wurde. Ich habe ein anderes Ticket geöffnet, da sich die Frage unterscheidet: Store browser window specific id in cookie

+0

Mai ist es auf der Serverseite verloren. Wo speichern Sie die Sitzung auf der Serverseite? –

+2

Sie verwenden 'sessionStorage', dh sobald der Browser geschlossen ist, werden die Daten gelöscht. Sie sollten 'localStorage' verwenden, damit es bestehen bleibt. –

+0

Nur zur Klarstellung, meinst du, es gibt null auf der gleichen Instanz der Seite, die es gesetzt wurde, oder nach einiger Zeit? sessionStorage soll flüchtig sein und regelmäßig gelöscht werden. –

Antwort

1

Gemäß der Dokumentation.

sessionStorage ist ähnlich wie Window.localStorage. Der einzige Unterschied besteht darin, dass Daten, die in localStorage gespeichert sind, kein Ablaufdatum haben. Die in sessionStorage gespeicherten Daten werden gelöscht, wenn die Seitensitzung beendet wird. Eine Seitensitzung dauert so lange, wie der Browser geöffnet ist und über Seiten neu geladen und wiederhergestellt wird. Das Öffnen einer Seite in einer neuen Registerkarte oder einem abschließenden Fenster bewirkt, dass der Sitzungsspeicher abläuft.

So kann es passieren, dass der Client den Browser geschlossen oder in einem neuen Tab geöffnet hat.