¿Diagnóstico programado de pérdida de sesión de ASP.Net debido al reciclaje de la aplicación?

StackOverflow https://stackoverflow.com/questions/401311

  •  03-07-2019
  •  | 
  •  

Pregunta

Tenemos una aplicación ASP.Net 2.0 (VS2005) que funciona bien localmente, pero a veces pierde el estado de la sesión cuando se implementa en el servidor remoto.

Sospecho que un posible problema con IIS es volver a diseñar la aplicación y, por lo tanto, eliminar el estado de sesión de los usuarios. Sin embargo, el servidor es remoto y no está bajo nuestro control ... así que no podemos simplemente iniciar IIS Admin y revisar la configuración de la aplicación. Otra causa posible, por supuesto, sería que los clientes rechacen la cookie de sesión de ASP.Net por alguna razón.

(Hemos descartado un error en nuestro código porque es una aplicación simple y nunca intenta eliminar nada del objeto Session, pero por supuesto ... esas son las últimas palabras famosas, ¿eh?)

¿Cómo diagnosticaría esto programáticamente?

Principalmente estoy tratando de averiguar cómo diagnosticar el problema; Si el culpable es el reciclado de una aplicación demasiado celosa, no debería ser demasiado difícil codificarlo.

Estoy seguro de que este es un problema común para los desarrolladores de ASP.Net.

¿Fue útil?

Solución

Aquí hay un par de enlaces que pueden ayudar a solucionar esto si puede cambiar algunas configuraciones:

Registro de eventos de reciclaje de procesos de trabajo en IIS 6.0 (IIS 6.0)

Registro de eventos de cierre de la aplicación ASP.NET

Otros consejos

Agregue algo de código de registro al método global.asax Application_Start y podrá ver cuándo / si su pérdida se debe a reinicios de la aplicación (o al menos, verá cuándo se inicia el servidor, si sabe se perdió una sesión al mismo tiempo, ya conoce al culpable).

Una solución alternativa sería utilizar el estado de sesión fuera de proceso (probablemente tendría que basarse en SQL si no tiene el control del servidor). Su código requiere un poco de trabajo adicional porque todo lo que almacena en Session debe ser serializable, pero resuelve el problema de los reinicios de la aplicación que causan la pérdida de la sesión.

IIS configurado para más de un subproceso de trabajo (Web Garden) en el grupo de aplicaciones puede causar la pérdida del estado de la sesión.

Encontré un escenario en el que la sesión se pierde: en una página asp.net, para un campo de cuadro de texto con una cantidad que tiene caracteres no válidos, y seguido de una recuperación de la variable de sesión para otro propósito. ToInt32 o double genera una primera excepción de excepción, pero el error no se muestra en esa línea. En lugar de eso, la sesión es nula debido a una excepción no controlada, muestra un error en la recuperación de la sesión, por lo que engaña la depuración ...

SUGERENCIA: pruebe su sistema para que falle: DESTRUCTIVO ... ingrese suficiente basura en escenarios no relacionados, también podría reproducir esta máquina en su base de código local ... :)

Espero que ayude, hydtechie

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top