2010-01-08 12 views
7

¿Cómo se soluciona el hecho de que las sesiones se eliminan cada vez que implementa ciertos archivos de código en un sitio web ASP.NET? A veces tenemos que implementar una solución crucial en el medio del día, pero no queremos arrancar a todos nuestros usuarios para ello.Implementación de ASP.NET: ¿Cómo evitar perder el estado de la sesión al actualizar el código?

+0

Prefiero tener un mensaje de notificación de tiempo de inactividad del sistema implementado y sacar a los usuarios limpiamente que meterme con un parche caliente que tiene que ver con las sesiones – curtisk

Respuesta

7

De forma predeterminada, las sesiones se almacenan InProc. Debe elegir un out-of-process option.

Tal vez sólo un StateServer es suficiente en su escenario

+4

El uso de StateServer solucionaría el problema. Tenga en cuenta que todo lo que desea poner en sesión tendrá que ser serializable al usar cualquier almacenamiento de sesión fuera de proceso. – TonyB

1

Una forma sería tener un servidor de configuración de carga equilibrada. Puede dirigir todo el tráfico al servidor A, aplicarle un parche al Servidor B y luego repetir al revés.

Alternativamente, como dice @Curtisk, es mejor llegar al nivel en el que no necesita hacer "parches calientes" mediante pruebas rigurosas y luego proceder a las interrupciones planificadas anunciadas con anticipación.

Espero que esto ayude.

1

La razón por la que esto sucede es que la implementación del nuevo código hace que el grupo de aplicaciones se recicle. Entonces pierde todo lo que tiene en la memoria.

La forma de evitar esto es no guardar nada en la memoria.

La dificultad de esto depende de su arquitectura.

Una solución podría ser guardar su información de sesión en SQL Server, utilizando el estado fuera de proceso. Tenga en cuenta que no use un servidor de estado en memoria, ya que si el grupo de aplicaciones se recicla, lo perderá.

Cuestiones relacionadas