Frage

MEIN Freund fragte hier a Frage

Und derjenige, der ihm geantwortet hat, hat etwas Interessantes geschrieben!(ohne Beleg, Quelle).

Es macht einen größeren Unterschied, wenn Sie den Speicher der Sitzung des Sitzungsstatus außerhalb des Verfahrens verwenden.In diesem Fall speichert das System ohne die Schnittstelle die Sitzungsdaten in der Remote -Datenbank, auch wenn es sich nicht geändert hat (das System verfolgt nicht, ob die Sitzungsdaten während der Anforderung geändert wurden).Wenn Sie die Schnittstelle von ireadonlySessionState verwenden, wird die Schreibbackphase übersprungen.

Wo steht, dass IRequiresSessionState die Sitzung zurückschreibt (auch wenn sich nichts geändert hat)?

Etwaige Erklärungen werden gerne entgegengenommen.

War es hilfreich?

Lösung

Ich kann keine formelle Dokumentation zu diesem Zweck finden, aber starte dotPeek (oder einen anderen Disassembler) und schaue dich um System.Web enthüllt nacheinander Folgendes:

  • Wann HttpContext.Handler Ist set, wenn der Handler implementiert IRequiresSessionState, HttpContext._requiresSessionStateFromHandler eingestellt ist true;
  • Dieses letztere private Mitglied informiert die getter für HttpContext.RequiresSessionState;
  • SessionStateModule (was meiner Vermutung nach immer in der Modulpipeline ist), in seinem EndRequest Hundeführer, Kontrollen HttpContext.RequiresSessionState, und wenn ja true, kommuniziert mit dem Sitzungsstatusanbieter, um den Status zu speichern.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top