Używam strony ASP.NET w moim polu rozwoju (.NET 2.0 na Vista/IIS7). Metoda Session_Start w pliku global.asax.cs rejestruje każde wywołanie do pliku (log4net). Metoda Session_End loguje również każde połączenie.Duża liczba Session_Start z tym samym identyfikatorem sesji
Używam stanu sesji InProc i ustaw limit czasu sesji na 5 minut (aby uniknąć oczekiwania przez 20 minut).
Uderzyłem się na stronę, poczekam na 5 minutową jednostkę Widzę logowanie Session_End. Potem I F5 na stronie internetowej. Przeglądarki nadal mają plik cookie sesji i wysyła go na serwer. Funkcja Session_Start jest wywoływana, a nowa sesja jest tworzona przy użyciu tego samego identyfikatora sesji (btw: Potrzebuję tego samego identyfikatora sesji, ponieważ jest on używany do przechowywania danych w bazie danych).
Wynik: Za każdym razem, gdy wciskam F5 do poprzednio zakończonej sesji, wywoływana jest metoda Session_Start, żądanie jest wykonywane, a metoda Session_End jest wywoływana natychmiast.
Po uruchomieniu innej przeglądarki metoda Session_Start jest wywoływana tylko raz. Następnie po 5 minutach Session_End każdy F5 powoduje wykonanie sekwencji Session_Start/request/Session_End.
web.config odpowiedniej sekcji:
<system.web>
<compilation debug="true" />
<sessionState timeout="2" regenerateExpiredSessionId="false" />
</system.web>
Potrzebuję pomocy w tym samym problemie, ale na stronach, na których nie zepsułem sesji. Zupełnie losowo witryna wykona transakcję DB, którą mam w Session_Start setki razy dziennie dla jednego użytkownika z jednym identyfikatorem sesji. Brak ostrzeżeń, przypadkowe strony dotknięte problemem i brak odpowiedzi. –
Spójrz na [ten link] (http://stackoverflow.com/a/11375003/779408). Tam jest prawdziwe rozwiązanie. – breceivemail