2016-06-24 8 views
6

In Asp.net WebForms gibt es ein Ereignis namens Seession_End() in global.asax, immer wenn Sitzung Timeout ist oder Sie Session.Abandon() aufrufen, dieser Event-Handler ausgeführt wird, Ich muss ähnliche Art von Verhalten in asp.net Core haben, ist es möglich?Gibt es Session.Abandon() asp.net Core

+0

Ich glaube, Sie Ihre Frage anders formulieren sollte. Schwer zu antworten! – Thomas

+1

Haben Sie Session.Clear() versucht? – Tratcher

+0

Ich muss das Ereignis erfassen, wenn die Sitzung automatisch eine Zeitüberschreitung hat. Gibt es einen Grund, warum dieses Ereignis aufgezeichnet werden soll oder gibt es überhaupt ein Ereignis? –

Antwort

0

Die docs Abdeckung das meiste davon. Das Sitzungszeitlimit wird wie folgt festgelegt:

Da es jedoch ein Cookie ist, hat das Cookie auch ein Ablaufdatum. Wenn IdleTimeout abläuft, läuft die Sitzung ab. Wenn der Cookie abläuft, ist die Sitzung beendet. Wenn der Cookie gelöscht wird, ist die Sitzung beendet.

Der Aufruf Session.Clear() entfernt den Inhalt der Sitzung, behält aber die Sitzung intakt (aka, der Cookie wird nicht gelöscht) wie in der source beschrieben.

+0

in Asp.net WebForms gibt es etwas namens Seesion_End() in global.asax, wenn Sitzung Timeout ist oder Sie Session.Abandon() aufrufen dieser Event-Handler ausgeführt wird, muss ich ähnliche Art von Verhalten in asp.net Core haben, ist es möglich? –

+0

So gibt es keine Möglichkeit, eine Sitzung programmgesteuert ungültig zu machen, z. wenn der Benutzer eine Abmelde-Taste benutzt? Was wäre der empfohlene Weg, um eine Sitzung ungültig zu machen, abgesehen davon, dass das Idle-Timeout sehr niedrig ist? Welcher Wert kann auch überprüft werden, um sicherzustellen, dass das Timeout die Sitzung tatsächlich ungültig gemacht hat? Es scheint irgendwie, dass die Session-Implementierung in .net Core nicht vollständig implementiert ist, oder mir hier etwas fehlt. – vm370

+0

@ vm370 Wie bereits von Tratcher erwähnt, empfiehlt sich der Aufruf von 'Session.Clear()', um eine Sitzung vom Code zu entwerten. Es gibt eine weitere Diskussion hier: [Session Issue 27] (https://github.com/aspnet/Session/issues/27) – TallMcPaul

0

Sie können die Sitzung löschen, indem Sie einfach anrufen:

HttpContext.Session.Clear();