2010-02-12 19 views
17

Nous construisons une application ASP.NET MVC qui sera déployé derrière un équilibreur de charge matériel qui prend en charge, entre autres, la mise en cache.Activer/désactiver l'état de session par contrôleur/méthode d'action

Notre proposition est de définir manuellement les modèles URL doivent être mises en cache par l'équilibreur de charge. Ce sera un processus assez facile pour nous car nous avons des pages de catalogue qui sont relativement statiques, puis des pages de «commande» qui ne le sont pas.

Doit éviter d'utiliser l'état de session sur les pages mises en cache, comme la réponse entière est mise en mémoire cache par l'équilibrage de charge - ceci inclut tous les cookies qui sont envoyés.

Idéalement il y aurait un attribut qui peut être appliqué à des contrôleurs ou des méthodes d'action qui permet une utilisation sélective de l'état de session, mais il ne semble pas être un. Je me rends compte qu'une telle approche entraînerait des sessions perdues si l'utilisation quitte la 'zone de session' - c'est bien.

Autre que réimplémenter l'ensemble du contrôleur HTTP ASP.NET MVC ... des suggestions?

Merci d'avance.

+0

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

Répondre

48

Ceci est maintenant déplacé de Futures dans MVC3. Il y a un attribut ControllerSessionState (pour la version finale sera apparemment nommé SessionState de MVC3), qui peut être appliquée à un contrôleur, quelque chose comme ceci:

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

(Mais dans la version RC, vous devez utiliser ControllerSessionState