Si ce n'est pas le code, pourriez-vous fournir une explication générique?Dans Asp.net, que mettriez-vous dans les événements Session_Start et Session_End dans Global.asax?
Dans Asp.net, que mettriez-vous dans les événements Session_Start et Session_End dans Global.asax?
Répondre
Dans Session_Start, vous pouvez configurer tout ce qui est pertinent pour une session, cela dépend beaucoup de l'application.
En général, vous devriez éviter Session_End si possible, non seulement il se déclenche généralement très tard (après une session timeout) mais dans une configuration multi-serveur, il ne se déclenche pas du tout.
Pour plus de détails, voir le tag SessionState dans Web.config
L'exemple le plus courant est le comptage des utilisateurs en ligne. Incrémenter le compte sur Session_Start
et le contraire sur Session_End
.
Session_Start Collecte toutes les informations utilisateur et stockage dans la base de données. Préparation du système pour l'utilisateur comme fichier temporaire, fichier mis en cache.
Session_End Enregistrement de l'état de l'utilisateur dans la base de données. Système de nettoyage et etc.
Il est toujours bon de nous rappeler pourquoi nous ne devrions jamais utiliser Session_End
excert de Understanding session state modes + FAQ
- événement est Session_End seulement supporté en mode InProc.
- Session_End ne sera pas déclenchée si vous fermez votre navigateur. HTTP est un protocole sans état , et le serveur n'a aucun moyen de savoir si le navigateur a fermé ou non.
- Session_End sera uniquement déclenchée:
(a). Après n minutes d'inactivité (n = valeur de temporisation),
ou
(b). Si quelqu'un appelle Session.Abandon(). - Pour le cas (a) (point 3), Session_End sera exécuté par un thread d'arrière-plan, , ce qui implique: (a). Votre code dans Session_End est en cours d'exécution à l'aide du compte de processus de travail. Vous pouvez avoir un problème d'autorisation si vous accédez à une ressource telle que la base de données . (b). Si une erreur se produit dans Session_End, elle échouera silencieusement.
- Pour le cas (b) (point 3), afin que Session_End soit déclenché , votre état de session doit d'abord exister. Cela signifie que vous devez stocker certaines données dans l'état de la session et avoir effectué au moins une requête.
- De nouveau pour le cas (b) (Point3), Session_End sera appelée seulement si la session abandonnée est effectivement trouvée. Par conséquent, si vous créez et abandonnez une session à l'intérieur de la même requête, car la session n'a pas été enregistrée et ne peut donc pas être trouvée, Session_End ne sera pas appelée. Ceci est un bug dans .NET Framework 1.0 et 1.1.
- 1. Abonnements Événements dans Global.Asax
- 2. Les événements dans Global.asax ne se déclenchent pas
- 3. Comment compter en toute sécurité les sessions: est-ce que Session_Start/End dans Global.Asax est suffisamment sécurisé?
- 4. ASP.NET Accès à la valeur de cookie dans l'événement session_end de global.asax
- 5. Asp.net System.Web.HttpContext.Current.Session null dans global.asax
- 6. ASP.NET Session_End appelée immédiatement après Session_Start après un délai d'attente de session
- 7. ASP.NET obtenir viewstate dans global.asax
- 8. Les événements Global.asax ne sont pas déclenchés
- 9. ASP.NET: Variable de session d'accès dans global.asax
- 10. Gérer les événements client dans Asp.net AJAX
- 11. Exceptions, Global.asax et eventlog
- 12. Gestion des événements dans ASP.net
- 13. global.asax et ASP classique?
- 14. Gestion de l'erreur Application_Error dans global.asax de l'application ASP.NET
- 15. Global.asax et exceptions non gérées
- 16. Problème pendant que j'essaie d'afficher les événements dans le calendrier?
- 17. Délégués et événements dans Interface?
- 18. Session_End Alternatives
- 19. Comment suivre les événements Google Analytics dans Server Side asp.net?
- 20. Utilisation du Logger NLogModule Ninject dans global.asax
- 21. Accès à HttpApplicationState au cours de Session_End
- 22. Routage ASP.NET - Faire des routes personnalisées SAUTER COMPLÈTE Tout dans le Global.asax?
- 23. Exceptions Global.asax et de gestion qui se produisent dans les threads générés
- 24. Application ASP.NET Démarrer sans utiliser Global.asax
- 25. Modèle Global.asax non disponible dans Visual Studio
- 26. Devriez-vous utiliser la méthode Application_Error dans votre global.asax dans ASP.NET MVC?
- 27. Est-il possible d'avoir uniquement un fichier global.asax dans une application asp.net?
- 28. PHP session_start échoue
- 29. IoC et les événements
- 30. Java Gestion des exceptions dans les "événements"
+1 pour indiquer d'éviter Session_End –