1. ホーム
  2. asp.net

[解決済み] ASP.NETの場合。Session.SessionIDがリクエスト間で変更される

2022-05-07 19:52:37

質問

なぜ、このプロパティは セッションID を使用します。 セッション -オブジェクトは、リクエストごとに変わるのですか?

このようなページがあります。

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

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

どうすればいいですか?

これがその理由です。

<ブロッククオート

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

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

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

EDIT

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

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