ASP.NET MVC 2プロジェクトで_Web.Config
_ファイルを次のように構成しました。
_<sessionState mode="InProc" timeout="1"/>
_
そして、_Global.asax.cs
_に以下を追加しました:
_protected void Session_End(object sender, EventArgs e)
{
System.Diagnostics.Debug.WriteLine("Session_End");
}
protected void Session_Start(object sender, EventArgs e)
{
System.Diagnostics.Debug.WriteLine("Session_Start");
}
_
Session_Start()
は、新しいユーザーがWebサイトにアクセスしたときに呼び出されます。アイドル時間の1分後にSession_End()
が呼び出されることを期待していましたが、そうではありません。私は何かが足りないのですか?
我慢して。イベントを呼び出す必要がありますが、必ずしもタイムアウトの直後である必要はありません。
ブラウザから試すことができます:セッションを開始し、1分以上待って、なんとかしてポストバックを実行します
これは、タイムアウトが機能することを確認するのに役立つはずであり、そのときにSessionEndが発生することも確認できると思います。それ以外の場合は、待ってから他のセッションを開始してください。システムはいつかそれを呼び出すようになります。
これを覚えて:
セッションに何も保存しない場合、session_endは起動しません。最初のリクエストでセッションにデータを保存していて、同じリクエストでabandonを呼び出すと、session_endも起動されません。
お役に立てれば!
T
テストのヒント:Session.Abandon
を使用して、実際のweb.config値をいじる必要がないようにします。同じリクエスト中にセッション値を設定してSession.Abandon
を呼び出さないでください。そうしないと、保存されません。