Habilitar / deshabilitar el estado de la sesión por controlador / método de acción

Estamos construyendo una aplicación ASP.NET MVC que se implementará detrás de un equilibrador de carga de hardware que admite, entre otras cosas, el almacenamiento en caché.

Nuestra propuesta es definir manualmente qué patrones de URL deben ser almacenados en caché por el equilibrador de carga. Este será un proceso bastante fácil para nosotros ya que tenemos páginas ‘de catálogo’ que son relativamente estáticas, luego páginas de ‘orden’ que no lo son.

Debe evitar el uso del estado de la sesión en las páginas almacenadas en caché, ya que el equilibrador de carga guarda en caché toda la respuesta; esto incluye todas las cookies que se envían.

Idealmente, habría un atributo que se puede aplicar a los controladores o métodos de acción que permite el uso selectivo del estado de la sesión, pero no parece haber ninguno. Me doy cuenta de que un enfoque como este resultaría en sesiones perdidas si el uso deja la ‘zona de sesión’ – está bien.

Además de volver a implementar todo el controlador HTTP ASP.NET MVC … ¿Alguna sugerencia?

Gracias por adelantado.

Esto está incluido en MVC 2 Futures. Consulte http://blogs.msdn.com/rickandy/archive/2009/12/17/session-less-mvc-controller.aspx para obtener más información.

Esto ahora se mueve de futuros a MVC3. Hay un atributo ControllerSessionState (aparentemente se llamará SessionState para la versión final de MVC3), que se puede aplicar a un controlador, algo como esto:

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

(Pero en la versión RC, debe usar ControllerSessionState