En ASP.NET, quand dois-je utiliser Session.Clear() plutôt que Session.Abandon() ?
Session.Abandon() détruit la session et l'événement Session_OnEnd est déclenché.
Session.Clear() supprime simplement toutes les valeurs (contenu) de l'objet. La session session avec la même clé est toujours vivante.
Par conséquent, si vous utilisez Session.Abandon(), vous vous perdez cette session spécifique et l'utilisateur l'utilisateur recevra une nouvelle clé de session. Vous pourriez l'utiliser par exemple lorsque l'utilisateur se déconnecte.
Utilisez Session.Clear(), si vous voulez que l'utilisateur reste dans la même session (si vous ne souhaitez pas qu'il se reconnecte par exemple) et réinitialiser toutes ses données données spécifiques à la session.
Quelle est la différence entre Session.Abandon() et Session.Clear() ?
Clear - Supprime toutes les clés et valeurs de la collection d'états de session.
Abandon - supprime tous les objets stockés dans une session. Si vous n'appelez pas appelez pas explicitement la méthode Abandon, le serveur supprime ces objets et détruit la session lorsque celle-ci session. Il déclenche également des événements tels que Session_End.
Session.Clear peut être comparé à retirer tous les livres de l'étagère, tandis que Session.Abandon est plus proche de jeter l'étagère entière.
...
En général, dans la plupart des cas, vous devez utiliser Session.Clear. Vous pouvez utiliser Session.Abandon si vous êtes sûr que l'utilisateur l'utilisateur va quitter votre site.
Revenons-en donc aux différences :
- Abandon de la demande de Session_End.
- Effacer supprime les éléments immédiatement, Abandonner ne le fait pas.
- Abandon libère l'objet SessionState et ses éléments pour qu'ils puissent être ramassés collectés.
- Efface le SessionState et les ressources qui lui sont associées.
Session.Clear() ou Session.Abandon() ?
Vous utilisez Session.Clear() lorsque vous ne souhaitez pas ne voulez pas terminer la session mais plutôt simplement effacer toutes les clés de la session et réinitialiser la session.
Session.Clear() ne provoquera pas l'événement Session_End dans votre fichier fichier Global.asax.
Mais d'un autre côté Session.Abandon() supprimera complètement la session et exécutera Eventhandler Session_End.
Session.Clear() est comme enlever des livres de l'étagère à livres
Session.Abandon() revient à jeter l'étagère elle-même. bibliothèque elle-même.
Question
Je vérifie que certaines sessions ne sont pas nulles lors du chargement de la page. Si l'une d'entre elles est nulle, je veux effacer toutes les sessions et rediriger vers la page de connexion.
Réponse :
Si vous voulez que l'utilisateur se reconnecte, utilisez Session.Abandon.