2010-02-12 8 views
17

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 memoria caché.Activar/desactivar el estado de la sesión por controlador/método de acción

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.

Aparte de volver a implementar todo el controlador HTTP ASP.NET MVC ... ¿alguna sugerencia?

Gracias de antemano.

+0

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

Respuesta

48

Esto ahora se transfirió de futuros a MVC3. Hay un atributo ControllerSessionState (al parecer será nombrado 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 utilizar ControllerSessionState

Cuestiones relacionadas