3

ASP.NET MVC3 では、セッション タイムアウトをオーバーライドできないようです。考えられるすべての関連するサーバー側コード ポイント (globax.ax.cs のコントローラー アクションとメソッド) にブレークポイントを設定しましたが、セッション タイムアウトには何もヒットしないようです。

ここで提案されているように、属性も適用しました: (http://www.tyronedavisjr.com/2008/11/23/detecting-session-timeouts-using-a-aspnet-mvc-action-filter/) でも、そうではありませんでしたセッションがタイムアウトしたときにヒットします。確かにタイムアウトはセッション側でなければなりませんが、どこで?

ASP.NET MVC アプリケーションでセッション タイムアウトが発生した場合に正確に何が起こるか知っている人はいますか?

4

2 に答える 2

3

どのsessionStateモードを使用していますか?(<sessionState mode=" ... ">web.config内)

Global.asax.csに次のメソッドを追加して、デフォルトのSession_Endの動作をオーバーライドできるはずです。

protected void Session_OnEnd(object sender, EventArgs e)
{
    // insert code here
}

覚えておくべきこと:

  • Session_OnEnd / Session_Endイベントは、HttpSessionState.Modeプロパティ値がInProcの場合にのみ呼び出されます(これはデフォルトであるため、web.configで変更していない場合は問題ありません)。StateServerまたはSQLServerに変更した場合、Global.asaxファイルのSession_OnEndイベントは無視されます。

  • Session_OnEnd / Session_Endイベントは、ブラウザを閉じたときではなく、セッションを放棄したときにアプリケーションによって呼び出されます。を呼び出すことで手動でトリガーできますSession.Abandon

于 2012-08-01T15:34:00.873 に答える
3

通常、セッション タイムアウトは、Global.asax の Session_End イベントで処理できます。

void Session_End(object sender, EventArgs e) {
    // perform last minute procedures before session ends
}

MSDN によるとHttpSessionState.Timeoutプロパティにはセッターがあり、アプリケーションのコード内から変更することも、web.config で永続的に変更することもできます。

于 2012-08-01T15:28:17.563 に答える