“HttpContext.Actuel.Session” vs Mondiale.asax“.Session”

Récemment, tout en travaillant sur un code pour un ASP.NET projet au travail. Nous avions besoin d'un suivi util pour prendre la base des indicateurs sur l'activité de l'utilisateur (page nombre d'accès etc) nous suivre dans Session, puis enregistrer les données dans la base de données via Session_End dans Global.asax.

J'ai commencé à bidouiller, le code a bien fonctionné, la mise à jour de la DB sur chaque chargement de la page. J'ai voulu supprimer cette DB frapper sur chaque demande si et seulement s'appuyer sur Session_End pour stocker toutes les données.

Tout le code de suivi est encapsulé dans le Tracker classe, y compris les propriétés qui sont essentiellement envelopper les variables de Session.

Le problème est que lorsque j'ai exécuté Tracker.Log() dans le Session_End méthode, la HttpContext.Actuel.Session dans le Tracker code n'était pas avec une NullReferenceException. Maintenant, cela fait sens car HttpContext se rapporte toujours à la actuel demande, et bien sûr dans Session_End, il n'y a pas de demande.

Je sais que Global.asax a un Session propriété qui retourne un HttpSessionState qui en fait semble fonctionner correctement (j'ai fini par l'injecter dans le tracker)..

Mais je suis curieux, comment diable puis-je obtenir la même référence à la HttpSessionState objet utilisé par Global.asax de à l'extérieur de Global.asax?

Merci d'avance les gars, j'apprécie l'entrée. 🙂

Une autre remarque est que Session_End est pas garantie d'être appelé. C'est le cas pour la Session SQL et hors d'état de session configurations.
Peut quelqu'un de bien vouloir mettre un extrait de code pour cette question, la réponse pour les débutants à comprendre. Comment accéder à "Proc" de mode, les valeurs stockées dans le courant.session somnwhere dans l'application, puis d'y accéder en mondial.asax fichier. Puis-je simplement utiliser this.session dans session_end ou un code supplémentaire est nécessaire?
Aussi, si plusieurs utilisateurs sont connectés au site. puis this individuellement reportez-vous à chaque demande de droit?

OriginalL'auteur Rob Cooper | 2009-01-21