Je cours un site Web ASP.NET sur ma boîte de développement (.NET 2.0 sur Vista/IIS7). La méthode Session_Start dans global.asax.cs consigne chaque appel dans un fichier (log4net). La méthode Session_End enregistre également tous les appels. J'utilise l'état de session InProc et définissez le délai d'expiration de la session à 5 minutes (pour éviter d'attendre 20 minutes). J'ai frappé le site Web, attendez 5 minutes unité Je vois la journalisation Session_End. Ensuite, je F5 le site Web. Les navigateurs ont toujours le cookie de session et l'envoient au serveur. Session_Start est appelée et une nouvelle session est créée en utilisant le même identifiant de session (btw: j'ai besoin que ce soit le même identifiant de session, car il est utilisé pour stocker des données dans la base de données). Résultat: Chaque fois que j'appuie sur F5 lors d'une session terminée précédemment, la méthode Session_Start est appelée.ASP.NET: Grand nombre de Session_Start avec l'ID de la même session
Lorsque j'ouvre un navigateur différent, la méthode Session_Start est appelée une seule fois. Puis, après 5 minutes, Session_End chaque F5 provoque l'exécution de la méthode Session_Start.
Quelqu'un peut-il expliquer pourquoi cela se produit?
Mise à jour: Après le délai d'attente de session, toutes les demandes suivantes ont une fin de session de début de session &. Donc, à la fin, ma question est la suivante: pourquoi les sessions sur ces demandes subséquentes sont-elles immédiatement fermées?
2010-02-09 14:49:08,754 INFO Global.asax[7486] [(null)] - Session started. SID=nzponumvf1hbaniverffp4mq host=127.0.0.1
2010-02-09 14:49:08,754 INFO Global.asax[7486] [nzponumvf1hbaniverffp4mq] - Request start: GET http://localhost:80/js/settings.js
2010-02-09 14:49:08,756 INFO Global.asax[7486] [(null)] - Session ended. SID=nzponumvf1hbaniverffp4mq
2010-02-09 14:49:08,760 INFO Global.asax[7486] [(null)] - Session started. SID=nzponumvf1hbaniverffp4mq host=127.0.0.1
2010-02-09 14:49:08,760 INFO Global.asax[7486] [nzponumvf1hbaniverffp4mq] - Request start: GET /css/package.aspx?name=core
2010-02-09 14:49:08,761 INFO Global.asax[7486] [(null)] - Session ended. SID=nzponumvf1hbaniverffp4mq
2010-02-09 14:49:08,762 INFO Global.asax[7486] [(null)] - Session started. SID=nzponumvf1hbaniverffp4mq host=127.0.0.1
2010-02-09 14:49:08,762 INFO Global.asax[7486] [nzponumvf1hbaniverffp4mq] - Request start: GET /js/package.aspx?name=all
2010-02-09 14:49:08,763 INFO Global.asax[7486] [(null)] - Session ended. SID=nzponumvf1hbaniverffp4mq
2010-02-09 14:49:08,763 INFO Global.asax[7486] [(null)] - Session started. SID=nzponumvf1hbaniverffp4mq host=127.0.0.1
2010-02-09 14:49:08,763 INFO Global.asax[7486] [nzponumvf1hbaniverffp4mq] - Request start: GET /css/package.aspx?name=rest
2010-02-09 14:49:08,764 INFO Global.asax[7486] [(null)] - Session ended. SID=nzponumvf1hbaniverffp4mq
2010-02-09 14:49:08,764 INFO Global.asax[7486] [(null)] - Session started. SID=nzponumvf1hbaniverffp4mq host=127.0.0.1
2010-02-09 14:49:08,765 INFO Global.asax[7486] [nzponumvf1hbaniverffp4mq] - Request start: GET /css/package.aspx?name=vacation
2010-02-09 14:49:08,765 INFO Global.asax[7486] [(null)] - Session ended. SID=nzponumvf1hbaniverffp4mq
web.config section pertinente:
<system.web>
<compilation debug="true" />
<sessionState timeout="2" regenerateExpiredSessionId="false" />
</system.web>
N'est-ce pas exactement ce que vous venez de décrire et qu'est-ce qu'on s'attendrait à ce qu'il se passe? – Lazarus
Non, je m'attendrais juste 1 Session_Start après Session_End, pas 10 Session_Start quand j'appuie sur F5 10 fois (ou cliquez sur 10 liens séquentiellement) – Jaap
La méthode Session_End est appelée immédiatement après que la demande a été servie. – Jaap