asp.net - sesion - Aumentando el tiempo de sesión
detectar inactividad mouse javascript (1)
En primer lugar, me gustaría confirmar si esta suposición es correcta.
Sí, esta suposición es absolutamente correcta en caso de que esté utilizando el modo de estado de sesión en memoria. En este caso, la sesión se almacena en la memoria y, dado que IIS podría destruir el Dominio de la aplicación bajo diferentes circunstancias (período de inactividad, se alcanzan los umbrales de CPU / memoria, ...) los datos de la sesión se perderán. Podría usar un modo de estado de sesión fuera de proceso. Ya sea StateServer o SQLServer. En el primer caso, la sesión se almacena en la memoria de una máquina especial dedicada que ejecuta el servicio aspstate de Windows y, en el segundo caso, es un servidor SQL dedicado. El SQL Server es el más robusto pero obviamente el más lento.
1) Si el método de actualización funcionará para mi escenario, incluso si la página está minimizada.
El iframe oculto aún funciona para mantener viva la sesión, pero como dije anteriormente puede haber algunas condiciones cuando IIS descarga la aplicación de todos modos (se alcanzan los umbrales de CPU / memoria => también se puede configurar esto en IIS).
2) ¿Hay algún otro método que pueda aumentar el tiempo de espera de la sesión que anula la configuración de tiempo de espera de IIS?
El método anterior no aumenta el tiempo de espera de la sesión. Simplemente mantiene la sesión activa al enviar solicitudes HTTP al servidor a intervalos regulares para evitar que IIS reduzca el AppDomain.
3) También leo algunas preguntas en Stack Overflow donde las respuestas indican que el tiempo de espera de la sesión de IIS es para páginas ASP clásicas. Entonces, ¿por qué mi tiempo de espera extendido no está disparando?
No existe el tiempo de espera de sesión de IIS. La sesión es un artefacto ASP.NET. IIS es un servidor web que no sabe nada sobre sesiones.
Personalmente no uso sesiones en mis aplicaciones. Simplemente los deshabilito:
<sessionState mode="Off"></sessionState>
y usar artefactos HTTP estándar como cookies, parámetros de cadena de consulta, ... para mantener el estado. Prefiero persistir la información en mi back-end y recuperarla más tarde usando identificadores únicos en lugar de confiar en las sesiones.
Sitio alojado a través de IIS 7.0
Me gustaría establecer el tiempo de espera de la sesión en 9 horas en mi aplicación ASP.NET.
Esto se ha configurado en web.config
<sessionState timeout="540"></sessionState>
Pero, como entiendo, si el tiempo de espera se establece en 20 minutos dentro del IIS donde está alojado el sitio web, establecer un estado de sesión extendida no servirá.
En primer lugar, me gustaría confirmar si esta suposición es correcta.
El problema es que no tengo acceso al IIS de mi servidor web alojado compartido.
Ahora, después de algunas investigaciones, se me ocurrió otra solución en el proyecto de código. Esto suena como una wonderful idea
. La idea es insertar un iframe en la página maestra. El iframe contendrá otra página con actualización meta de menos de 20 minutos.
Response.AddHeader("Refresh", "20");
Esta idea me pareció bien. Pero el artículo tiene 7 años. Además, en la sección de comentarios, un usuario se queja de que esto no funcionará si la página está minimizada y me preocupa que ocurra lo mismo cuando la pestaña de mis páginas no esté activa.
Me gustaría saber estas cosas
- Si el método de actualización funcionará para mi escenario, incluso si la página está minimizada.
- ¿Existen otros métodos que podrían aumentar el tiempo de espera de la sesión que anula la configuración de tiempo de espera de IIS?
- También leo algunas preguntas en Stack Overflow donde las respuestas indican que el tiempo de espera de la sesión de IIS es para páginas ASP clásicas . Entonces, ¿por qué mi tiempo de espera extendido no está disparando?