El objeto de sesión de la tecnología ASP (Páginas Active Server) se utiliza para almacenar información privada de los usuarios durante las conversaciones. Las variables y los objetos definidos en el objeto de sesión del usuario actual se pueden compartir entre páginas, pero por lo tanto, otros usuarios no pueden acceder a los usuarios de la aplicación. Información de estado.
El objeto de sesión tiene una propiedad muy importante: Tiempo de espera, que se utiliza para establecer el tiempo que el objeto de sesión puede permanecer inactivo antes de que se libere el recurso de la sesión (el valor predeterminado es de 20 minutos). Cuando se agota el valor de tiempo establecido por la propiedad del tiempo de espera, se lanzará el recurso de la sesión. Destruya el objeto de sesión a través del atributo de tiempo de espera, evitando que el objeto de sesión se genere en el servidor sin restricciones y protegiendo los recursos del servidor. Sin embargo, en el desarrollo real de la red, a menudo se encuentra que el proceso de solicitud no se puede completar normalmente debido a la falla del objeto de sesión y la pérdida de información de estado del usuario.
Aunque la estrategia de liberar recursos utilizando el atributo de tiempo de espera es para proteger el servidor, la falla impredecible del objeto de sesión se ha convertido en una desventaja en el desarrollo de aplicaciones. Por lo tanto, en el desarrollo de la aplicación real, el problema de la falla del objeto de sesión debe resolverse.
Soluciones tradicionales
Todas las soluciones existentes deben usar métodos del lado del servidor para resolver el problema de la falla del objeto de sesión. Los métodos de tratamiento típicos se dividen en dos categorías: tratamiento antes de la falla y el tratamiento después del fracaso.
Procesamiento antes de que la falla se refiera a la transferencia y otro procesamiento de variables antes de que el objeto de sesión haya expirado para evitar problemas antes de que ocurra. Una solución típica es establecer un temporizador en la aplicación, activar el temporizador 5 minutos antes de que falle el objeto de sesión y luego restablecer las diversas variables y objetos del objeto de sesión. Este método agrega carga adicional al servidor porque el temporizador debe mantenerse en tiempo real en el lado del servidor y se debe garantizar que el programa esté activo durante toda la sesión.
El procesamiento después de la falla se refiere a incitar al usuario a procesar inmediatamente después de que expire el objeto de sesión. Una solución típica es guardar puntos de interrupción en el lado del servidor después de que falla el objeto de sesión, y solicitar al usuario que vuelva a iniciar sesión y continúe completando el trabajo. Este método es fácil de implementar, pero a menudo los usuarios finales se quejan y critican debido a la recuperación automática incompleta de los puntos de interrupción y la complejidad del proceso de re-login.
En respuesta a las deficiencias de los dos tipos de soluciones anteriores, en la práctica de programación, el autor combina las características del objeto de cookie y utiliza el método para acceder conjuntamente a las variables a nivel de sesión en el cliente, lo que no solo evita la demanda adicional del servidor Recursos, pero también resuelve el problema del problema de los puntos de interrupción que no se restablecen automáticamente, y también elimina el problema de iniciar sesión nuevamente.
Nueva solución
Un objeto de cookie es un pequeño paquete de información que almacena datos sobre el usuario actual, que se puede pasar entre el navegador y el servidor web. En aplicaciones web, las cookies proporcionan un mecanismo para rastrear y grabar cada ubicación de usuario. Uno de los usos más comunes de las cookies es guardar el tiempo y la fecha de la última página web que se visitará en una aplicación web o en la URL que se visitará.
Por lo general, los objetos de cookies se almacenan en el subdirectorio de cookies en el directorio del sistema de Windows Client como archivos. Los datos de información almacenados en el objeto de cookie se pueden almacenar durante mucho tiempo, por lo que las variables a nivel de sesión se pueden respaldar en el objeto de cookie. objeto de cookie.
Un objeto de cookie tiene las siguientes propiedades:
● Expira: establezca la fecha en que expire el objeto de la cookie;
● Dominio: determina la transmisión del objeto de cookie como un miembro determinado solo por el atributo de dominio;
● Ruta: determine la ruta de entrega del objeto de cookie;
● Asegurar: para aclarar si el objeto de la cookie es seguro;
● HASKEYS: Devuelve si el objeto de cookie contiene múltiples valores.
Si la propiedad expirada del objeto de cookie no se define explícitamente, el objeto de cookie expirará al final de la sesión del usuario.
Lea y escriba objetos a través de la colección de solicitudes y la colección de respuestas en ASP. La sintaxis para escribir variables en un objeto de cookie es la siguiente:
Response.cookies (cookie) [(clave) | .attribute] = valor
Donde, la cookie es el nombre del archivo de cookie, la clave indica un elemento de diccionario, el atributo es una naturaleza específica de la cookie y el valor es el valor asignado a la cookie. Por ejemplo, para crear una cookie llamada MyHobby y asignar su valor a: Baloncesto, use la siguiente sintaxis:
< %Response.cookies (myHobby) = baloncesto %>
El método para leer un objeto de cookie en la máquina del cliente es el siguiente:
Request.cookies (cookie) [(clave) | .attribute]
Entre ellos, la cookie es el nombre de la cookie solicitada, la clave es el subíndice del valor de subproceso y el atributo se usa para indicar el atributo de cookie. Por ejemplo: para extraer información de una cookie llamada MyHobby y escribir su valor en la página, use la siguiente sintaxis:
< % Request.cookies (myHobby) %>
Cabe señalar que el encabezado de la página HTTP no se puede escribir en un objeto de cookie después de que se haya enviado la página HTTP al navegador solicitante. En otras palabras, la información de las cookies no se puede enviar al navegador después de que cualquier identificador HTML se envíe al navegador.
Implementación específica
La siguiente es una implementación de la sala de chat basada en la tecnología ASP para introducir cómo lidiar con el problema de la falla variable de objeto de sesión.
● Variable inicial a nivel de sesión antes de que el usuario inicie sesión: nombre de usuario (utilizado para almacenar el nombre de usuario de inicio de sesión).
<%Session (UserName) =%>
// Inicializa el objeto de cookie
< % Response.cookies (nombre de usuario) = %>
● Cuando el usuario inicia sesión, establezca variables a nivel de sesión y vuelva a hacer una copia de seguridad del objeto de cookie del cliente.
<%username = trim (request.for (username))%>
< % Session (UserName) = UserName %>
// Realización de variables a nivel de sesión al objeto de cookie del cliente
< % Response.cookies (nombre de usuario) = nombre de usuario %>
● Cuando el usuario habla, se lee la variable a nivel de sesión.
< % username = session (nombre de usuario) %>
// Si la variable ha expirado, busque el objeto de cookie del cliente
< % if username = entonces %>
< % username = request.cookies (nombre de usuario) %>
< % if username = entonces %>
// Si el usuario ingresa a la sala de chat sin iniciar sesión, el valor de atributo del objeto de cookie está vacío. En este momento, se le solicita al usuario que tenga un error y recurra a la página de inicio de sesión del usuario
< %Respuesta. Error de redirección.html %>
< % else %>
// restaurar esta variable de nivel de sesión del objeto de cookie
< % Session (UserName) = UserName %>
< % final si %>
< % final si %>
● Cuando el usuario salga de la sala de chat, borre el objeto a nivel de sesión y el objeto de cookie.
<%Session (UserName) =%>
// Borrar el valor de atributo del objeto de cookie para evitar que los usuarios ingresen a la sala de chat sin iniciar sesión
< % Response.cookies (nombre de usuario) = %>
El código anterior se ejecuta y se pasa en el entorno Windows NT 4.0 + IIS 4.0 + IE 5.0.
Resumen
El método para acceder a las variables de nivel de sesión en el cliente es simple y práctico, y puede evitar problemas de manera efectiva, como el inicio de sesión forzado por parte de los usuarios.