Question

J'insère quelque chose dans le cache lorsque l'utilisateur se connecte.

Maintenant, je veux supprimer cela du cache lorsque la session de l'utilisateur expire. HttpContext est null .. donc je ne sais pas pour quel utilisateur la session a expiré. Comment puis-je trouver ceci?

MODIFIER: Malheureusement, SessionID ne m'offre pas grand chose. Ce que je fais dans ce cas particulier utilise un HttpModule qui gère AuthorizeRequest pour insérer le nom d'utilisateur actuel dans le cache afin de s'assurer qu'un autre utilisateur d'une autre machine ne peut pas se connecter. Mais la session est nulle dans le HttpModule. Donc je ne peux pas utiliser ça. D'autres suggestions?

Était-ce utile?

La solution

Vous pouvez accéder à la session dans un module Http, il vous suffit d'attendre son initialisation, c'est-à-dire l'événement AcquireRequestState ( http://msdn.microsoft.com/en-au/system.web.httpapplication.acquirerequeststate.aspx )

Autres conseils

Gérez l'événement Session_End dans votre fichier global.asax. Ici, vous devriez avoir accès au SessionID.

En supposant que vous accédez à l'élément mis en cache sur chaque page, vous pouvez définir une expiration glissante pour l'élément mis en cache. Définissez le délai d'expiration sur le même délai que votre session. Avec une expiration glissante, le cache sera actualisé à chaque accès à l'objet et sera supprimé s'il n'est pas utilisé dans ce délai.

Voir http://msdn.microsoft.com/en-us/ bibliothèque / 4y13wyk9.aspx pour plus d'informations.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top