Sobre Global. Asa

Tengo el siguiente Global.Asa en una aplicación,
<SCRIPT LANGUAGE='VBScript' RUNAT='SERVER'>
Sub Session_OnStart
Set Session("bd")=Server.CreateObject("ADODB.Connection")
Session("bd").Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=D:\Inetpub\wwwroot\siwa\data\Pruebas\Pruebas.mdb;"
End Sub
Sub Session_OnEnd
Session("bd").Close
Set Session("bd")=Nothing
End Sub
</SCRIPT>
Se supone que cuando el usuario abandona la aplicación, por ejemplo cerrando el navegador, se dedia ejecutar el evento Session_OnEnd y sin embargo el fichero continua abierto.
Session_Onstart funciona perfectamente.
Ya se que no debería guardar objetos en variables de session pero cuando me entere ya tenia una aplicación demasiado grande para remodificarla.
Gracias,
Respuesta
1
Debemos tener en cuenta que el evento onEnd de Session se ejecuta cuando la session caduca no cuando el usuario abandona la aplicación (¿qué significa abandona la aplicación?)
Se que sigue abierto porque el fichero esta bloqueado para por ejemplo cambiarlo el nombre y el fichero que access monta como control de bloqueo sigue existiendo.
Abandonar la aplicación me refiero a cerrar el navegador.
Supongo que el navegador no puede notificar al servidor que ha cerrado pero entonces no veo para que me sirve el global. Asa, si como supongo tengo que ponerle un botón de cerrar aplicación, que es como lo tengo ahora.
Gracias,
Se me ocurre que podrías ponerlo en el aplication en vez de en el session de manera que se abriese cuando hay una session y se cerrase cuando se acabasen las sessiones, siempre teniendo en cuenta que:
Como tu bien decías es una técnica poco recomendable
Abrir y cerrar la base de datos para cada una de las sesiones puede tirarte el servidor (si tienes muchas clar)
Al hacerlo en el application solo mantendrías un connection para toda la aplicación
De todos modos te recomiendo encarecidamente que modifiques la aplicación.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas