2011-12-29 95 views
0

我在特定的時間,在一個特定的時間扭動一個簡單的在線遊戲, ,遊戲將被更新,當時間到了,首先我需要註銷用戶。 在Global.asax的「Application_Start」函數中,我初始化了計時器,當它打勾時,調用我在Global.asax中寫的方法「UpdateGame」。這裏是方法:在Global.asax註銷用戶

public static void UpdateGame() 
    { 

     AccountController account = new AccountController(); 
     AdminController admin = new AdminController(); 
     HomeController home = new HomeController(); 

     account.LogOff(); 
     admin.ChechHireEndTimes(); 
     admin.CheckRentsEndTimes(); 
     admin.UpdateRankings(); 
     admin.InitializeAbstractTimes(); 
    } 

當它來到logOff(),它凍結。這裏是註銷方法:

[Authorize] 
    public ActionResult LogOff() 
    { 

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

我工作了很多,但它似乎是因爲註銷不與HTTP請求調用時,它不工作當用戶按下注銷按鈕。

所以我的問題是,我如何從Global.asax內部調用像這樣的控制器的動作?

+0

This [answer](http://stackoverflow.com/a/2355104/60108)可能會幫助你。 – Eranga 2011-12-29 10:01:25

+0

是的,謝謝Eranga,這是我的回答。 – nafiseh 2011-12-29 10:26:27

回答

1

無法在沒有用戶上下文的情況下在global.asax中執行註銷操作。當你做account.LogOff()時應該註銷哪個用戶?我認爲使用app_start重定向(RedirectToAction)可能會凍結您的應用。

要註銷所有用戶,可以使用LastUpdated全局標誌(由UpdateGame方法設置爲當前時間)。登錄時,可以將LastUpdated值放入用戶會話中,並在每個請求中使用全局值檢查此值。如果全局值較高,則通過調用註銷方法註銷當前用戶。

+0

謝謝VinayC,我明白了! – nafiseh 2011-12-29 10:25:23