ASP.NET: リクエスト間で Session.SessionID が変わる 質問する

ASP.NET: リクエスト間で Session.SessionID が変わる 質問する

なぜこの物件はセッションIDセッションASP.NET ページ内のオブジェクトはリクエスト間で変更されますか?

次のようなページがあります:

...
<div>
    SessionID: <%= SessionID %>
</div>
...

そして、ブラウザに関係なく、F5 キーを押すたびに出力が変化し続けます。

ベストアンサー1

これがまさにその理由だ

Cookie ベースのセッション状態を使用する場合、ASP.NET は、Session オブジェクトが使用されるまでセッション データ用のストレージを割り当てません。その結果、セッション オブジェクトがアクセスされるまで、ページ要求ごとに新しいセッション ID が生成されます。アプリケーションでセッション全体にわたって静的なセッション ID が必要な場合は、アプリケーションの Global.asax ファイルに Session_Start メソッドを実装し、Session オブジェクトにデータを格納してセッション ID を修正するか、アプリケーションの別の部分のコードを使用して Session オブジェクトにデータを明示的に格納することができます。

http://msdn.microsoft.com/en-us/library/system.web.sessionstate.httpsessionstate.sessionid.aspx

つまり、バックエンドでセッションオブジェクトにアクセスしない限り、リクエストごとに新しいセッションIDが生成されます。

編集

このコードは Global.asax ファイルに追加する必要があります。セッション オブジェクトにエントリが追加され、期限が切れるまでセッションが固定されます。

protected void Session_Start(Object sender, EventArgs e) 
{
    Session["init"] = 0;
}

おすすめ記事