![]() |
Desconexion de la aplicacion por inactividad utilizando META
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 |
Prueba con session.abandon(), y en el load de cada pagina verifica si el objeto session tiene algun valor.
|
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 |
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 |
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) |
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. |
No me reconoce la var Cache. Tengo que hacer algo mas???
Mi aplicación es con delphi.net y asp.net. Muchas gracias. Chao |
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?
|
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. |
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? |
Perdona no he podido responder antes porque estaba de vacaciones. Ya lo he probado. Tienes razón esa es la solución. Muchas gracias!!!!
|
La franja horaria es GMT +2. Ahora son las 09:58:44. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi