Tengo un problema muy extraño con la sesión en ASP.NET 2.0. El sistema en el que estoy trabajando usa variables de sesión para almacenar parámetros en los objetos (como preguntas y respuestas) para generar un informe. Estas son instancias de clases con el mismo nombre, por lo que se rellenan con los parámetros de la siguiente manera:La sesión de ASP.NET finaliza inesperadamente
Este informe se genera a través de 4 páginas aspx. Primero define los parámetros de ubicación y fecha, la segunda página almacena preguntas y la tercera almacena respuestas. El último muestra enlaces a informes generados en formatos Excel y HTML. Todos los datos variables se almacenan en la sesión, y todo va bien, hasta la última página, cuando ocurre algo como una sesión.Abandono(), el evento Session_End se dispara y se pierden todas las variables. Esto ocurre solo una vez al día, para cada usuario registrado en el primer uso del informe, y luego puede probar todo el día docenas de veces y no volverá a verlo.
El problema ocurre en la misma página SIEMPRE, y el modo de sesión es InProc.
que ya lo han hecho las siguientes validaciones:
- marcado si había alguna Session.Abandon() o Session.clear() comandos. No hay ninguno.
- Tiempo de espera de la sesión comprobada, está establecido en 18 minutos, y el problema ocurre en cualquier momento como se indicó anteriormente, independientemente de cuánto tiempo lo haya estado usando en 18 minutos.
- Tiempo de espera comprobado de formularios, en Autenticación. También está establecido en 18 minutos.
- He aprendido que hay un error con Server.Transfer() que pueden a veces sesión de color y estado de vista, y se han sustituido por Response.Redirec()
- han monitoreado línea de sesión por línea de código, y todo va bien, y cuando la página está completamente cargada, simplemente muere. Todas las variables se han ido, pero la sesión sigue funcionando.
- Por lo que a mí respecta, IIS está configurado correctamente. No tengo acceso a él, pero todos los otros sistemas funcionan perfectamente.
- También he analizado algunos de los sistemas antes mencionados buscando alguna pista sobre lo que podría estar pasando, pero sus archivos web.config son muy similares a los que estoy teniendo y no se implementó ningún código especial para interactuar con la sesión diferentemente.
- También pensé en supervisar IIS para reinicios de aplicaciones, pero estoy bastante seguro de que no excede el límite predeterminado de 15. Sin embargo, no tengo acceso al servidor IIS, y todas las pruebas realizadas en mi computadora utilizan ASP. NET Development Server. El problema ocurre en ambos.
- Ha comprobado las posibilidades de reciclaje del proceso, como .config y los cambios del archivo asax, los cambios en/en el directorio bin, ninguno sucede.
siguientes restricciones:
- No se puede cambiar el modo de sesión para que no sea InProc debido a políticas de la empresa.
- El "proceso" de generación de informes se creó a través de 4 páginas. No estoy de acuerdo con esto, pero no puedo volver a hacerlo debido a restricciones de tiempo y presupuesto.
Cualquier idea o solución es útil. Me mantendré en contacto para cualquier actualización y prueba necesaria.
¿Tiene algún acceso a los mecanismos de perfilador? Estábamos experimentando problemas de enjuague de sesión cuando la cantidad de memoria dedicada a w3wp excedía la especificada en machine.config. Los contadores de rendimiento de ASP.NET nos ayudaron mucho a depurar esto. –
No hacemos uso del archivo machine.config. Según lo que sé, este archivo abarca todo el sitio web y afectaría a otras aplicaciones en el mismo sitio web de IIS. La infraestructura del servidor en la empresa aplica todos los sistemas en el mismo sitio web, como directorios virtuales. –
¿Se puede publicar el código para mostrar en qué momento se dispara el session_end? ¿Y qué usas para generar los informes? compruebe si no maneja accidentalmente ninguna excepción (por ejemplo, en application_error). (Si el material de informes es de terceros, ejecute la página sin él para ver si aún se produce). – Jeroen