2011-12-29 14 views
0

私は簡単なオンラインゲーム、 を特定の時間に苦労しています、毎日、ゲームが更新され、時が来たら、まずユーザーをログアウトする必要があります。 Global.asaxの "Application_Start"関数では、タイマーを初期化し、それが目安であれば、Global.asaxで書き込んだメソッド "UpdateGame"が呼び出されます。ここにメソッドがあります:Global.asaxでユーザーをログアウト

logOff()に来たら、フリーズします。ここでログオフ方法は次のとおりです。

[Authorize] 
    public ActionResult LogOff() 
    { 

      FormsService.SignOut(); 
      return RedirectToAction("Index", "Home");    
    } 

私はそれに多くのことを働いたが、それはログアウトがHTTPリクエストで呼び出されていないためと思われ、それは、ユーザがログアウトボタンを押したときのように機能していません。

私の質問は、このようなコントローラのアクションをGlobal.asaxの中から呼び出すにはどうすればいいのですか?

+0

この[回答](http://stackoverflow.com/a/2355104/60108)が役立ちます。 – Eranga

+0

はい、感謝のエランガ、それは私の答えでした。 – nafiseh

答えて

1

ユーザコンテキストなしでglobal.asaxでログオフすることはできません。 account.LogOff()を実行すると、どのユーザーをログオフする必要がありますか? app_startのリダイレクト(RedirectToAction)がアプリをフリーズしている可能性があります。

すべてのユーザーをログアウトするには、LastUpdatedグローバルフラグ(UpdateGameメソッドで現在の時刻に設定)を使用できます。ログイン中は、LastUpdated値をユーザーセッションに入れ、各要求でこの値をグローバル値でチェックします。グローバル値が高い場合は、ログオフメソッドを呼び出して現在のユーザーをログアウトします。

+0

ありがとうVinayC、私はそれを得た! – nafiseh

関連する問題