Cómo matar una sesión o ID de sesión (ASP.NET/C#)

¿Cómo puedo destruir una sesión (Session [“Name”]) cuando el usuario hace clic en el botón de cerrar sesión?

Estoy mirando la Referencia de API de ASP.NET en MSDN y no parece tener mucha información. Parece bastante limitado. Pero no puedo encontrar ninguna otra página para ASP.NET Classes, etc.

Yo he tratado:

Session.Abandon(); y Session.Contents.Remove("Name"); ninguno de ellos trabaja. (Encontré esto en un foro de una búsqueda en Google)

El método Abandon debería funcionar ( MSDN ):

 Session.Abandon(); 

Si desea eliminar un elemento específico del uso de la sesión ( MSDN ):

 Session.Remove("YourItem"); 

EDITAR: si solo quieres borrar un valor, puedes hacer lo siguiente:

 Session["YourItem"] = null; 

Si quiere borrar todas las teclas, haga lo siguiente:

 Session.Clear(); 

Si ninguno de estos funciona para usted, entonces algo sospechoso está sucediendo. Revisaría para ver dónde está asignando el valor y verificará que no se reasigne después de borrar el valor.

Cheque simple hacer:

 Session["YourKey"] = "Test"; // creates the key Session.Remove("YourKey"); // removes the key bool gone = (Session["YourKey"] == null); // tests that the remove worked 

Session.Abandon ()

Esto marca la sesión como Abandonado, pero la sesión no se abandonará en ese momento, la solicitud debe completarse primero.

También es una buena idea ordenar al navegador del cliente que borre el valor de la cookie de id de sesión.

 Session.Clear(); Session.Abandon(); Response.Cookies["ASP.NET_SessionId"].Value = string.Empty; Response.Cookies["ASP.NET_SessionId"].Expires = DateTime.Now.AddMonths(-10); 

De lo que probé:

 Session.Abandon(); // Does nothing Session.Clear(); // Removes the data contained in the session Example: 001: Session["test"] = "test"; 002: Session.Abandon(); 003: Print(Session["test"]); // Outputs: "test" 

Session.Abandon solo establece un indicador booleano en el objeto de sesión en verdadero. El servidor web que llama puede reactjsr a eso o no, pero NO hay acción inmediata causada por ASP. (Lo comprobé con el .net-Reflector)

De hecho, puede seguir trabajando con la sesión anterior, presionando el botón Atrás del navegador una vez y continuar navegando por el sitio web normalmente.

Entonces, para concluir esto: Use Session.Clear () y ahorre frustración.

Observación: He probado este comportamiento en el servidor de desarrollo ASP.net. El IIS real puede comportarse de manera diferente.

Session.Abandon() esto destruirá los datos.

Tenga en cuenta que esto no eliminará necesariamente el token de sesión de un usuario, y que ese mismo token de sesión en un momento posterior podría ser recogido y creado como una nueva sesión con el mismo ID porque se considera que es un juego justo para ser utilizado.

Matas una sesión como esta:

 Session.Abandon() 

Sin embargo, si solo quieres vaciar la sesión, utiliza:

 Session.Clear() 
 Session.Abandon() 

es lo que deberías usar la cosa está detrás de las escenas. asp.net destruirá la sesión, pero inmediatamente le dará al usuario una nueva sesión en la próxima página. Entonces, si está revisando para ver si la sesión desaparece justo después de llamar a abandonar, parecerá que no funcionó.

 Session["YourItem"] = ""; 

Funciona muy bien en las páginas web de razors .net.

Session.Abandon(); tampoco funcionó para mí.

La forma en que tuve que escribirla para que funcionara fue así. Podría funcionar para usted también.

 HttpContext.Current.Session.Abandon();