Session.Abandon() VS Session.Clear() ¿Que diferencia existe?

Parece una tontería pero estoy seguro que mucha gente que lea este post no sabe la diferencia que existe entre Session.Abandon() y Session.Clear(), o me equivoco???

Cuando en una aplicación Web utilizamos el método Session.Abandon(), a parte de eliminar dicha sesión, se dispara el evento Session_End del Global.asax, en el cual podemos incluir la lógica necesaria para realizar cuando una sesión termina (por ejemplo borrado de ficheros temporales asociados a al IdSesion) y en la siguiente petición que hagamos se dispará el evento Session_Start del global.asax, en el cual podemos inicializar variables, cargar objetos... mientras que con Session.Clear() sólo eliminamos la sesión.

Podríamos encontrar una similitud entre Session.Abandon() con el botón Cerrar Sesión de Windows, imaginaros que en una aplicación Web necesitamos hacer un logout y al mismo tiempo login con otro usuario, lo que nos lleva a realizar una inicialización de los datos sobre el usuario que podríamos realizar en el evento Session_Start, no??

Bueno pues esto es todo amigos!!!

Salu2.

Published 23/2/2007 13:40 por Luis Ruiz Pavón
Comparte este post:
http://geeks.ms/blogs/lruiz/archive/2007/02/23/session-abandon-vs-session-clear-que-diferencia-existe.aspx

Comentarios

# re: Session.Abandon() VS Session.Clear() ¿Que diferencia existe?

Saludos, Sabes estoy empezando con esto de .net pero me he complicado con las sessiones, no se si estara bien pero podrias realizar algun ejemplo ya q en tu comentario demuestras conocimiento...q chupamedias jejejej.... bueno en resumen si puedes escribir algun ejemplo q ocupe las sessiones con login , te estare eternamente agradecido

aios

Friday, February 23, 2007 5:10 PM por Dario Cortes Martinez

# re: Session.Abandon() VS Session.Clear() ¿Que diferencia existe?

Me puedes especificar mejor lo de las sesiones con login para preparar el ejemplo.

Un saludo.

Wednesday, February 28, 2007 2:49 PM por Luis Ruiz Pavón

# re: Session.Abandon() VS Session.Clear() ¿Que diferencia existe?

creo que ambas deben ser utilizadas primero:

Session.Clear(); luego

Session.Abandon();

Thursday, July 26, 2007 6:28 PM por octavio

# re: Session.Abandon() VS Session.Clear() ¿Que diferencia existe?

Yo estoy trabajando con sesiones, cuando doy cerrar sesion, limpia la sesion, pero en el momento que doy en el boton back del explorador, me regresa de nuevo a la aplicación y lo que quiero es q al dar back recargue la pagina de login como cuando salimos de hotmail, damos back y tenemos q registrarnos de nuevo.

Saturday, August 11, 2007 12:22 AM por Silvia

# re: Session.Abandon() VS Session.Clear() ¿Que diferencia existe?

y porque no preguntas en tu pagina principal al hacer postback por la session["MY id"]='Key', sino mandalo para una pagina x con response.redirect("paginax.aspx")

asi

isPostback

{

if (mysession["My id"]=='Yo mismo pero mejor')

Bindata(); // cuerpo del programa principal

else

Response.redirect('Mipagina del error');

}

Saludos

Monday, June 02, 2008 10:43 PM por Ing.Jose Arturo Pittí

# re: Session.Abandon() VS Session.Clear() ¿Que diferencia existe?

podras ser mas especifico en ese ejemplo, porque yo tengo el mismo problema, he creado un boton en el masterpage que en su evento click tengo : Session.Abandon(), pero le doy regresar en la flecha del explorador y me carga igual todo, no me pide ni usuario ni password, debo decir que mi aplicacion utiliza autenticacion windows. Por favor ayudenme si alguinesabe como hacer eso pongame un codigo de ejemplo. Otra consulta si es que la saben y aprovechando este medio, como hago para implenetar el cache en el cliente?

Tuesday, June 03, 2008 4:11 PM por marco

# re: Session.Abandon() VS Session.Clear() ¿Que diferencia existe?

ESTOY UTILIZANDO EL SESSION.ABANDON PERO EN REALIDAD NO ME ESTA CERRANDO LA SESION PUESTO QUE SI CON LA BARRA DEL EXPLORER ME REGRESO PUEDO SEGUIN EN LA PAGINA COMO SI  NO HUBIERA CERRADO LA SESION. alguin sabe por que??

SALUDOS

Monday, September 22, 2008 6:45 PM por luisa

# re: Session.Abandon() VS Session.Clear() ¿Que diferencia existe?

De gran ayuda, gracias

Saturday, November 22, 2008 2:50 AM por Enrique Molina

# re: Session.Abandon() VS Session.Clear() ¿Que diferencia existe?

Gracias, genial explicacion. Y cuidado al usar el Abandom las Session se guardan en una hastable y eso puede provocar errores si se tocan cosas mientras salta el evento.

Tuesday, June 16, 2009 12:30 PM por Amor

# re: Session.Abandon() VS Session.Clear() ¿Que diferencia existe?

Respuesta a Tuesday, June 03, 2008 4:11 PM by marco

Debes agregar lo siguiente <%@ OutputCache Location="None" %> en tu página con extensión .aspx, así puedes liberar la caché y cuando quieras regresar a la página anterior con el botón atras de tu navegador no t permitirá ingresar. Saludos.

Tuesday, May 04, 2010 9:23 PM por Marvin

# re: Session.Abandon() VS Session.Clear() ¿Que diferencia existe?

pana en el Page_Load Pregunta por una variable de sesion

Ej:

void Page_Load(object sender, EventArgs e){

if (Session["User"] == null)

            Response.Redirect("default.aspx");

}

repite ese codigo por cada pagina web

Thursday, September 02, 2010 10:40 PM por Daniel

# re: Session.Abandon() VS Session.Clear() ¿Que diferencia existe?

El problema de redireccionar, preguntando la session esta nula, es que el usuario pierde todos sus datos,yo la verdad hago la session infinita usando javascript. y al final es el usuario quien decide abandonar la session.

Tuesday, October 19, 2010 1:22 AM por Jose

# re: Session.Abandon() VS Session.Clear() ¿Que diferencia existe?

Gracias Marvin! Muy útil tu sugerencia:

"Debes agregar lo siguiente <%@ OutputCache Location="None" %> en tu página con extensión .aspx, así puedes liberar la caché y cuando quieras regresar a la página anterior con el botón atras de tu navegador no t permitirá ingresar."

Saludos!

Tuesday, January 25, 2011 2:26 PM por Laura

# re: Session.Abandon() VS Session.Clear() ¿Que diferencia existe?

Amigo, mira la respuesta a esto es muy sensilla, usa Session.Abandon(), como hacer para que te devuelva  la pagina de login?, create una pagina UserControl del tipo .ascx (es como crear un aspx nuevo con el asistente ps) en el load de ese control te preguntas si alguna variavle de session es nula por ejemplo:

if (Session["User"] == null)

           Response.Redirect("default.aspx");

}

como lo sugiere el compañero Daniel, pero en este caso rediriges al login:

if (Session["User"] == null)

           Response.Redirect("Login.aspx");

}

Por ultimo debes agregar esta paggina que creasste a todas las paginas del proyecto que requieran autenticacion, simplemente halas desde el explorador de soluciones hasta la vista de diseño de la pagina deseada en un lugar que hallas designado para este uso.

el UserControl se ejecuta siempre antes del load de una pagina de tal manera que tendremos una autentcacion 100% segura, recuerda que en el UserControl puedes tambien poner elemntos aspx como un menu por ejemplo, ya uega con tu creatividad. ;D

cualuier duda cris_galle@hotmail.com

Friday, April 29, 2011 12:39 AM por Pharsat