私は MVC 5 ベースの Web プロジェクトを持っており、HttpSessionStateWrapper
クラスを使用してセッション状態を操作しています。基本的に、ユーザー固有のデータをセッション状態に保存します。これが私のコードです(コンテキストなし):
public class Util
{
private HttpSessionStateWrapper _session;
public Util()
{
_session = new HttpSessionStateWrapper(HttpContext.Current.Session);
}
public T Get<T>(string key) where T : class
{
var sessionedObject = (T)_session[key];
if (sessionedObject != null)
{
Logger.Instance.LogDebug("Object returned from session. Session Timeout=" + _session.Timeout.ToString() + " Session Id=" + _session.SessionID);
return sessionedObject;
}
return null;
}
}
クラスのインスタンスはUtil
一度作成され、別のシングルトン タイプの静的プロパティとして機能します。そして、私はここにいくつかのログを記録しています。したがって、セッション状態のタイムアウトは、Web.config を介して 1 分に設定されます。しかし、10分以内でもセッションが終了することはないようです。
さらに、各リクエストSessionId
は新しいことに注意しましたが、セッションからデータを取得するとき、IDは最初に生成されたセッションIDと同じです。
Session End
イベントも私のために発生したことはありませんが、発生Session Start
します。ここにいくつかのログがあります:
2013-11-11 04:27:38.2578 App Starting
2013-11-11 04:27:38.6641 Session onStart. Id=0x545pyzbt4e1vzh1h1rr5d5
2013-11-11 04:27:38.6641 Object returned from session. Session Timeout=1 Session Id=0x545pyzbt4e1vzh1h1rr5d5
2013-11-11 04:28:06.5263 Session onStart. Id=ujuxasiz5hvzbv15gbvuuxt3
2013-11-11 04:28:06.5263 Object returned from session. Session Timeout=1 Session Id=0x545pyzbt4e1vzh1h1rr5d5
2013-11-11 04:29:00.3432 Session onStart. Id=jgwmmh1ubokxn3kfadevfnph
2013-11-11 04:29:00.3432 Object returned from session. Session Timeout=1 Session Id=0x545pyzbt4e1vzh1h1rr5d5
2013-11-11 04:39:25.7919 Session onStart. Id=0mocujzp4tbwwvgnkx1mn0qi
2013-11-11 04:39:25.7919 Object returned from session. Session Timeout=1 Session Id=0x545pyzbt4e1vzh1h1rr5d5
編集:返信してくれてありがとう!このようなものを深くデバッグする時間がないため、セッション状態の使用をまったく拒否し、HttpContext.Current.Items
コレクションを使用することにしました。それは私のニーズに応えます