2009-04-30 1 views

Antwort

4

In Session_Start können Sie alles einrichten, was für eine Sitzung relevant ist, hängt sehr von der Anwendung ab.

Im Allgemeinen sollte Session_End nach Möglichkeit vermieden werden, es wird nicht nur sehr spät ausgelöst (nach einem Session-Timeout), sondern in einer Multi-Server-Konfiguration wird es überhaupt nicht ausgelöst. siehe

Einzelheiten der Session Tag in Web.config

+0

+1 für die Angabe zu vermeiden Session_End –

1

Das häufigste Beispiel ist das Zählen der Online-Benutzer. Inkrementieren der Zählung auf Session_Start und das Gegenteil auf Session_End.

2

Session_Start Sammeln Sie alle Benutzerinformationen und speichern in der Datenbank. System für Benutzer wie temporäre Datei, zwischengespeicherte Datei vorbereiten.

Session_End Benutzerstatus in der Datenbank speichern. Reinigungssystem und etc.

4

Es ist immer gut, daran zu erinnern, warum wir nie Session_End

excert von Understanding session state modes + FAQ


  1. Session_End Ereignis verwenden sollten, ist wird nur im InProc-Modus unterstützt.
  2. Session_End wird nicht ausgelöst, wenn Sie Ihren Browser schließen. HTTP ist ein statusloses Protokoll , und der Server hat keine Möglichkeit zu wissen, ob der Browser geschlossen hat oder nicht.
  3. Session_End wird nur ausgelöst:
    (a). Nach n Minuten Inaktivität (n = Timeout-Wert),
    oder
    (b). Wenn jemand Session.Abandon() aufruft.
  4. Für Fall (a) (Punkt 3) wird Session_End von einem Hintergrundthread ausgeführt: , was bedeutet: (a). Ihr Code in Session_End wird mit dem Arbeitsprozesskonto ausgeführt. Möglicherweise haben Sie ein Berechtigungsproblem, wenn Sie auf eine Ressource wie die -Datenbank zugreifen. (b). Wenn in Session_End ein Fehler auftritt, wird es automatisch fehlschlagen.
  5. Für den Fall (b) (Punkt 3), damit Session_End als ausgelöst wird, muss Ihr Sitzungszustand zuerst existieren. Das bedeutet, Sie müssen einige Daten im Sitzungszustand speichern und haben mindestens eine Anfrage abgeschlossen.
  6. Wieder wird für Fall (b) (Point3) Session_End nur aufgerufen, wenn die abgebrochene Sitzung tatsächlich gefunden wird. Wenn Sie eine Sitzung innerhalb der gleichen Anforderung erstellen und wenn nicht gespeichert werden und Sitzung nicht finden, wird Session_End daher nicht aufgerufen. Dies ist ein Fehler in .NET Framework 1.0 und 1.1.
Verwandte Themen