2011-01-05 10 views
1

Wir haben unsere ASP.NET-Sitzungen auf einem zentralen SQL-Server beibehalten. Jetzt sind alle Sitzungsdaten gezwungen, über die Verbindung zu einem SQL-Server zu gehen, auch wenn es sich nur um triviale Informationen handelt. Kann ich Sitzungen mischen - dh. Behalte SQL für die Session ["abc"] = "value" und überschreibe es, Dinge lokal zu speichern, wie zum Beispiel session.AddLocalMemory ["xyz"] = "blah".ASP.NET Sitzung Mischen

Antwort

3

Nicht mit einem der integrierten Anbieter. Sie könnten eine Erweiterungsmethode zu HttpSession hinzufügen und diese verwenden, um Material lokal zu speichern. Dies könnte durch einfaches Einfügen eines Statebags in den ASP.NET-Speichercache mit einer Zeitüberschreitung erfolgen.

Wenn es sich um eine Umgebung mit Lastenausgleich handelt (die mehr als einen Webserver umfasst), sollten Sie die Auswirkungen verschiedener Anforderungen auf verschiedene Server berücksichtigen und entsprechend lokalen Speicher verwenden.

+0

Zustimmen. Einen weiteren Punkt hinzufügen, um vorsichtig zu sein: Das Verlieren lokaler Sitzungsdaten ist nicht auf eine Lastausgleichsumgebung beschränkt, sondern wird auch regelmäßig durch Prozessrecycles verursacht. Eine andere Sache zu überlegen, ob eine solche Mischung für zukünftige Entwickler des Systems klar sein würde - und wie schmerzvoll der Wechsel von lokalen zu SQL-Speicher für bestimmte Teile wäre (SQL/Out-of-Process-Status erfordert Serialisierung von Objekten, was oft nicht der Fall ist) für Dinge, die Sie in den lokalen Zustand fallen lassen ...) –