Sto eseguendo un sito Web ASP.NET sulla mia casella di sviluppo (.NET 2.0 su Vista/IIS7). Il metodo Session_Start in global.asax.cs registra ogni chiamata a un file (log4net). Il metodo Session_End registra anche ogni chiamata.Gran numero di Session_Start con lo stesso ID di sessione
Utilizzo lo stato di sessione InProc e imposta il timeout della sessione su 5 minuti (per evitare l'attesa di 20 minuti).
Ho colpito il sito Web, attendo 5 minuti. Vedo la registrazione Session_End. Allora F5 il sito web. Il browser ha ancora il cookie di sessione e lo invia al server. Session_Start viene chiamato e viene creata una nuova sessione utilizzando lo stesso ID di sessione (btw: ho bisogno che questo sia lo stesso ID di sessione, perché è usato per memorizzare i dati nel database).
Risultato: Ogni volta che si preme F5 in una sessione precedentemente terminata, viene chiamato il metodo Session_Start, la richiesta viene eseguita e il metodo Session_End viene chiamato immediatamente.
Quando si apre un browser diverso, il metodo Session_Start viene chiamato una sola volta. Quindi, dopo 5 minuti, la Session_End ogni F5 causa la sequenza Session_Start/request/Session_End da eseguire.
web.config sezione pertinente:
<system.web>
<compilation debug="true" />
<sessionState timeout="2" regenerateExpiredSessionId="false" />
</system.web>
Ho bisogno di aiuto su questo stesso problema, ma su siti in cui non ho avuto problemi con la sessione. Completamente a caso il sito effettuerà una transazione DB che ho in Session_Start centinaia di volte al giorno per un utente con un ID di sessione. Nessun avviso, siti casuali interessati e nessuna risposta. –
Guarda [questo link] (http://stackoverflow.com/a/11375003/779408). C'è una soluzione reale lì. – breceivemail