開発ボックス (Vista/IIS7 では .NET 2.0) で ASP.NET Web サイトを実行しています。global.asax.cs の Session_Start メソッドは、すべての呼び出しをファイル (log4net) に記録します。Session_End メソッドもすべての呼び出しをログに記録します。
私は InProc セッション状態を使用しており、セッション タイムアウトを 5 分に設定しています (20 分待たないようにするため)。
Web サイトにアクセスし、5 分単位で待機すると、Session_End のログが表示されます。次に、ウェブサイトを F5 します。ブラウザにはまだセッション Cookie があり、それをサーバーに送信します。Session_Start が呼び出され、同じセッション ID を使用して新しいセッションが作成されます (ところで、データベースにデータを格納するために使用されるため、これは同じセッション ID である必要があります)。
結果: 以前に終了したセッションで F5 キーを押すたびに、Session_Start メソッドが呼び出され、リクエストが実行され、Session_End メソッドがすぐに呼び出されます。
別のブラウザーを開くと、Session_Start メソッドが 1 回だけ呼び出されます。次に、5 分後に Session_End 各 F5 キーを押すと、Session_Start/request/Session_End シーケンスが実行されます。
web.config 関連セクション:
<system.web>
<compilation debug="true" />
<sessionState timeout="2" regenerateExpiredSessionId="false" />
</system.web>