2012-02-16 7 views
3

私は、web.configのどこかにアプリケーションを設定したり、セッションのタイムアウトを処理する方法があるのだろうかと思っていました。私が達成したいのは、いくつかのコントローラに行き、日時とセッション変数の他のいくつかの値をセッション変数に入れる前に、セッションがタイムアウトになるためです。セッション変数のタイムアウトを処理します

+0

このセッション状態を保存できるデータベースがありますか?これらの状態値が作成される前に各ユーザーが認証されますか?セッションが期限切れになると、ユーザーの信用度に基づいてセッションを再検索できるように、値を保存できると思っています。 – GrantVS

+0

yeap、実際には、ユーザーのログオン時にdatetimeを格納するデータベースをデータベースに持っていますが、セッションが満了した場合アプリケーションがnullになる前にこの瞬間を処理できません – Jorge

+0

session.endをglobal.asaxで試すことができますか? – findcaiyzh

答えて

0

MVCでも同じですが、イェオールドasp.netで私が誰かのセッションがタイムアウトしたときにログインするために必要なアプリケーションを持っていたし、私は明らかにあなたには、いくつかを設定する必要がありますのSession_End

if (Session == null || Session["logout-clicked"] != null) return; 
TimeSpan ts = DateTime.Now - (DateTime)Session["session.start"]; 
new EventLog() 
{ 
    EventLogType = EventLogType.SessionTimedOut, 
    UserId = ((UserObject)Session["UserSession"]).Id, 
    DateStamp = DateTime.Now, 
    LogData = "logged in for: " + (Int32)ts.TotalHours + "hrs " + ts.Minutes + "mins", 
    CachedName = ((UserObject)Session["UserSession"]).Name 
}.Save(); 

でGlobal.asax.csファイルでそれをやりましたあなたのログインメソッドのセッション変数の合計(あなたがその種の情報を望むならば、時間/セッション時間の合計のようなものです)を保存する必要があるデータを保存する独自のメソッドを持っているでしょうが...うまくいけばそれはまあいくつかのアイデアを鼓舞しますか?

ログアウトをクリックしたときに別のログが表示され、Session.Abandon()を呼び出した後にSession_Endが呼び出されるため、セッション変数が「ログアウト」されました(ログアウト時に設定されます)それがログアウトをログアウトしていないことを確認してから、セッションのタイムアウトを行ってください。

+0

Session_Endには制限があります。まず、最も重要なのは、InProcセッション管理を使用する場合のみです。第2に、保存しているものによっては、ブラウザを閉じたユーザーに基づいて不正確なデータを取得する可能性があります。サイトでタイムアウトしたユーザーとブラウザウィンドウを閉じたユーザーの違いを確認することはできません。 http://stackoverflow.com/questions/1262867/session-end-code-on-browser-close –

関連する問題