PDA

Ver la Versión Completa : Desconexion de la aplicacion por inactividad utilizando META


mamen
23-08-2004, 14:01:27
Hola a todos!!! Tengo un problema necesito desconectar mi aplicación web con ASP.NET pasados unos minutos para ello tengo el siguiente código

<META HTTP-EQUIV="Refresh" CONTENT="100;URL=https://localhost/AplicBDC/fdesconexion.aspx">

Muestro una página de desconexión, pero me he dado cuenta q una vez mostrada esta página si voy para Atras con los botenes estandar de la barra del explorer y vuelvo a la página principal esta sigue funcionando que puedo hacer??? Cómo puedo desconectar la sesion realmente

Muchas gracias por todo. Espero respuestas CHAO

__hector
23-08-2004, 21:33:21
Prueba con session.abandon(), y en el load de cada pagina verifica si el objeto session tiene algun valor.

mamen
24-08-2004, 11:26:15
Cómo puedo verificar si el objeto session tiene algún valor????

He probado con session.SessionID y tiene el mismo valor antes y despues de ejecutar session.abandon

Espero tu respuesta. Gracias

mamen
24-08-2004, 12:28:25
Como el metodo abandon llama al Session_End del Global.asax me he creado una variable Application['sesionterminada']:='True'; y esta es la que comparo en el load de cada página.

Esta variable la inicializo a falso en la pagina principal. Es correcto definir una variable de aplicacion para este caso???

Aparentemente funciona pero crees que afectará cuando haya varias sesiones abiertas???
El método Abandon a que sesiones afecta, sólo a la que lo llama no? y que pasa con el resto seguirian con sus consultas sin notar nada???

Muchas gracias. Chao

__hector
24-08-2004, 16:55:04
Las variables de aplicacion son iguales para todas las sesiones, o sea que se comparten entre todos los usuarios, cosa que no es igual con las variables de sesion, que son particulares.

Tienes dos formas de lograr lo que quieres: guardando en una variable de sesion algun valor clave por el que preguntaras en cada pagina (por ejemplo, Session("UsuarioID") := talvalor, y en el load de cada pagina, if Session("UsuarioID") = "" then talcosa), o utilizar tambien el objeto cache, que funciona relativamente igual que una sesion, pero es mucho mas parametizable. Seria Cache("Llave") := valor.

Mas documentacion en el msdn, y quizas en la ayuda de delphi (no creo que incluya toda la ayuda del framework, la verdad no la he visto)

mamen
25-08-2004, 12:33:17
Antes de crearme la variable de aplicación me la cree de session pero tenia el problema de que al ejecutar el método abandon el valor de la variable se perdia y entonces la comparación en el load no funcionaba.

Voy a probar con la cache, en qué se diferencian?

Luego te cuento.Chao.

mamen
25-08-2004, 12:39:29
No me reconoce la var Cache. Tengo que hacer algo mas???

Mi aplicación es con delphi.net y asp.net.

Muchas gracias. Chao

__hector
26-08-2004, 00:01:03
Como que la comparacion del load no funcionaba? Si la idea es que cuando se venza la sesion ese valor no exista, creo que es facilmente manejable. A que te refieres cuando dices que no funciona?

mamen
27-08-2004, 13:39:11
Tengo una variable Session[sesterminada]=false, cuando ejecuto el metodo Abandon esta variable se pone a true. En cada página en el Load realizo la comparación de si la sesión está terminada si es asi me muestra la página de desconexión y en caso contrario sigue podiendo manejar la aplicación.

El problema está en q una vez que se ha ejecutado el metodo Abandon y la sesion se cierra el valor de mi variable de sesion tb se pierde y me da un error al comparar dicha variable. Es por eso por lo que me la cree como variable de Aplicacion, en este caso no da ningún error pero tampoco funciona porque aunq un usuario la ponga true (al ejecutar el met abandon)si otro arranca la aplicación inmediatamente la ha puesto a false(se inicializa a false siempre en la primera pag al acceder).

Necesito crearme una variable global para cada sesion, y q esta no se pierda cuando la sesion se cierre para poder comparar. O si se te ocurre a ti algo distinto tambien me sirve??? Muchas gracias por todo.

Si no entiendes algo dimelo. Gracias.Chao.

__hector
27-08-2004, 15:28:05
Simple,

Si al intentar comparar el valor de una variable de sesion que no existe me dices que da error, se puede inducir que ese error se deriva del echo de que la variable no existe (cuantas vueltas filosoficas al mismo asunto :D ), y si no existe cuando debiera existir, se debe a que, o no fue creada, o fue destruida.

Cualquiera de las dos razones nos es igual de valida, por lo que simplemente metemos el codigo en un try/except/finally, y podremos manejar dicha excepcion. Algo como:

try
.... comparacion actual

except
... ese asunto no existe, que es igual a que sea false
finallly
.. cualquier otro codigo, el finally no es necesario
end;

Capish?

mamen
08-09-2004, 14:52:52
Perdona no he podido responder antes porque estaba de vacaciones. Ya lo he probado. Tienes razón esa es la solución. Muchas gracias!!!!