在Global.asax中注销用户

时间:2011-12-29 09:53:32

标签: asp.net

我正在扭动一个简单的在线游戏, 在特定的时间,每天,游戏都会更新,到时候,首先我需要注销用户。 在Global.asax的“Application_Start”函数中,我初始化了计时器,当它打勾时,调用我在Global.asax中编写的方法“UpdateGame”。这是方法:

    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()时,它会冻结。这是logOff方法:

    [Authorize]
    public ActionResult LogOff()
    {

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

我在它上面做了很多工作,但似乎因为没有使用http请求调用注销,所以当用户按下注销按钮时它不起作用。

所以我的问题是如何从Global.asax内部调用像这样的控制器的动作?

1 个答案:

答案 0 :(得分:1)

如果没有用户上下文,则无法在global.asax中执行注销操作。执行account.LogOff()时应该注销哪个用户?我相信使用app_start重定向(RedirectToAction)可能会冻结您的应用。

要注销所有用户,您可以使用LastUpdated全局标志(由UpdateGame方法设置为当前时间)。登录时,您可以将LastUpdated值放入用户会话,并在每个请求中,使用全局值检查此值。如果全局值较高,则通过调用注销方法注销当前用户。