MSDN によると、regenerateExpiredSessionId="true"は、期限切れのセッション ID がクライアントによって指定されたときにセッション ID が再発行されることを指定していると理解しています。ただし、これは説明どおりに機能していないようです。
次のように構成されたアプリケーションがあるとします。
<sessionState
cookieless="AutoDetect"
regenerateExpiredSessionId="true" />
また、別の場所には、期限切れのセッション ID が埋め込まれているアプリケーションのページへのリンクがあります。
<p><a href="http://localhost/SessionStateTest/(S(3gxng155isp0ocvhveoklnqe))/Default.aspx">Here is a link!</a></p>
Cookie が有効になっていないブラウザでそのリンクをクリックした場合、セッション ID は再発行されません。URL から期限切れの ID をリサイクルし、この古い ID で新しいセッションを作成しています。
もちろん、Cookie を使用しない複数のブラウザが同時にリンクをクリックすると、すべてのブラウザが期限切れの同じセッション ID を共有します。これは明らかにセキュリティ上の問題です。
regenerateExpiredSessionId="true"は、ユーザーが誤って同じセッション状態を共有するのを防ぐためのものではありませんか? もしそうなら、この場合、フレームワークが期待どおりに新しいセッション ID を生成しないのはなぜですか?