Comment effacer l'état de session SQL pour tous les users dans ASP.NET

J'utilise le mode SQLServer SessionState pour stocker la session dans mon application ASP.NET. Il stocke certains objects qui sont sérialisés / désérialisés chaque fois qu'ils sont utilisés.

Si je modifie le code de la structure de ces objects et que je mets une nouvelle version en ligne, tout user connecté recevra une erreur, car ses objects de session (ceux de l'ancienne version) ne correspondent pas à la structure attendue par la nouvelle version déserialization

Existe-t-il un moyen d'effacer toutes les sessions à la fois dans la database afin que toutes les sessions actives expirent et que les users soient obligés de se connecter à nouveau (tous les objects de session sont donc créés à partir de zéro)?

Ou … Y at-il un autre moyen de résoudre cette situation?

Vous pouvez appeler Session.Abandon ou Effacer pour chaque user lorsqu'il a frappé l'object Session invalide.

Vous pouvez également parcourir la collection de sessions par user et effacer les keys pouvant contenir des «anciens» objects. Peut-être que vous avez un ticket de connection et que vous ne voulez pas effacer.

foreach (ssortingng key in Session.Keys) { if (!key.Equals("login")) { Session.Remove(key); } } 

Vous pouvez essayer d'utiliser la procédure stockée dans SQL Server pour effacer toutes les sessions:

 CREATE PROCEDURE [dbo].[DeleteSessions] AS DELETE [ASPState].dbo.ASPStateTempSessions RETURN 0