2010-02-12 20 views
17

Wir erstellen eine ASP.NET MVC-Anwendung, die hinter einem Hardware Load Balancer bereitgestellt wird, der unter anderem Caching unterstützt.Aktivieren/Deaktivieren des Sitzungsstatus pro Controller/Aktionsmethode

Unser Vorschlag besteht darin, manuell festzulegen, welche URL-Muster vom Load Balancer zwischengespeichert werden sollen. Dies wird ein ziemlich einfacher Prozess für uns sein, da wir "Katalog" -Seiten haben, die relativ statisch sind, und dann Seiten "bestellen", die es nicht sind.

Vermeiden Sie die Verwendung des Sitzungsstatus auf zwischengespeicherten Seiten, da die gesamte Antwort vom Load Balancer zwischengespeichert wird. Dies schließt alle gesendeten Cookies ein.

Idealerweise gibt es ein Attribut, das auf Controller oder Aktionsmethoden angewendet werden kann, die die selektive Verwendung des Sitzungsstatus ermöglichen, aber es scheint keinen zu geben. Mir ist klar, dass ein solcher Ansatz zu verlorenen Sitzungen führen würde, wenn die Anwendung die "Sitzungszone" verlässt - das ist in Ordnung.

Anders als die Neuimplementierung des gesamten ASP.NET MVC HTTP-Controllers ... irgendwelche Vorschläge?

Vielen Dank im Voraus.

+0

http://stackoverflow.com/questions/1464203/disable-session-state-per-request-in-asp-net-mvc –

Antwort

48

Dies wird jetzt von Futures in MVC3 verschoben. Es gibt eine ControllerSessionState Attribut (wird offenbar SessionState für die endgültige Version von MVC3 genannt werden), die an eine Steuerung angewendet werden kann, etwa wie folgt:

[SessionState(SessionStateBehavior.Disabled)] 
public class MyController : Controller 
{ 
... 

(Aber in der RC-Version, Sie ControllerSessionState

verwenden müssen