¿Cuál es la diferencia entre Session.Abandon()
y Session.Clear()
en ASP.Net?¿Cuál es la diferencia entre Session.Abandon() y Session.Clear() en ASP.Net?
Respuesta
Session.Abandon()
finalizará la sesión actual. Session_End
se disparará y la siguiente solicitud desencadenará el evento Session_Start
.
Session.Clear
simplemente borrarán los datos de la sesión y la sesión permanecerá activa.
La ID de sesión seguirá siendo la misma en ambos casos, siempre que el navegador no esté cerrado.
En pocas palabras:
Session.Abandon();
cancela la corriente Session
.
Session.Clear();
borra todos los valores del estado Session
.
Session.Abandon()
destruirá/matará toda la sesión.
Session.Clear()
elimina/borra los datos de la sesión (es decir, las claves y valores de la sesión actual), pero la sesión estarán vivos.
Al comparar con el método Session.Abandon(), Session.Clear() no crea la nueva sesión, solo hace que todas las variables en la sesión sean NULL.
La ID de sesión se mantendrá igual en ambos casos, siempre que el navegador no esté cerrado.
Algunas cosas a tener en cuenta aquí desde mi experiencia:
Session.Abandon()
no invalida la sesión actual. Las solicitudes antiguas se ejecutan correctamente si las reproduces.
Pero, después de llamarlo, establecer el contenido del diccionario de sesión abandonado no tiene efecto permanente. La siguiente solicitud obtiene un nuevo diccionario de sesión nuevo (incluso si usa la misma ID de sesión al reproducir una solicitud anterior) y ninguno de sus cambios previos (después de haber llamado al método) está allí.
Parece que Session.Abandon()
detiene por completo la persistencia de toda la sesión, mientras que Session.Clear()
solo elimina sus datos.
Y, también, si necesita proteger su aplicación de los ataques de reproducción, debe agregar algo de lógica que valide las sesiones y no dependa de ninguno de estos métodos incorporados. Estos parecen ser solo para administrar la persistencia de los datos de la sesión, no para proteger su aplicación.
- 1. ¿Cuál es la diferencia entre Session.Abandon() y Session.Clear()
- 2. Optimización de MVC para Session.Clear(), Session.Abandon(), Session.RemoveAll()?
- 3. ¿Cuál es la diferencia entre ASP.NET y ASP.NET MVC?
- 4. ¿Cuál es la diferencia entre HttpContext.Current.User y Thread.CurrentPrincipal en asp.net?
- 5. En ASP.Net, ¿cuál es la diferencia entre <% = y <% #
- 6. ¿Cuál es la diferencia entre ASP.NET y C#?
- 7. ¿Cuál es la diferencia entre + = y = +?
- 8. ¿cuál es la diferencia entre:.! y: r !?
- 9. ¿Cuál es la diferencia entre ".equals" y "=="?
- 10. Cuál es la diferencia entre $ y jQuery
- 11. Cuál es la diferencia entre = y: =
- 12. Cuál es la diferencia entre $ (...) y `...`
- 13. ¿Cuál es la diferencia entre dict() y {}?
- 14. ¿Cuál es la diferencia entre [indefinido] y [,]?
- 15. ¿Cuál es la diferencia entre {0} y ""?
- 16. ¿Cuál es la diferencia entre .ToString (+) y ""
- 17. ¿Cuál es la diferencia entre `##` y `hashCode`?
- 18. ¿Cuál es la diferencia entre "$^N" y "$ +"?
- 19. ¿Cuál es la diferencia entre " " y ""?
- 20. ¿Cuál es la diferencia entre Microsoft WebMatrix y Visual Studio?
- 21. ¿Cuál es la diferencia entre button.click event y button.command event?
- 22. ¿Cuál es la diferencia entre <% %> y <%=%>?
- 23. ¿Cuál es la diferencia entre UserControl, WebControl, RenderedControl y CompositeControl?
- 24. ¿Cuál es la diferencia entre "aspnet_regiis -ir" y "aspnet_regiis -iru"?
- 25. ¿Cuál es la diferencia entre @ y $ y% en MSBuild?
- 26. Cuál es la diferencia entre MVC 2 y MVC3
- 27. ¿Cuál es la diferencia entre ResolveUrl y ResolveClientUrl?
- 28. ¿Cuál es la diferencia entre Databinder.Eval y Container.DataItem?
- 29. ¿Cuál es la diferencia entre RadGrid.Rebind() y RadGrid.MasterTableView.Rebind()?
- 30. Diferencia entre asp y asp.net
Posible duplicado: http://stackoverflow.com/questions/1470445/what-is-the-difference-between-session-abandon-and-session-clear (Sí, sé que esto es más de cinco años de retraso. acabo de notar una publicación en el foro en otro lugar que publicó en ambos. :)) –