Asp.net Mvc RedirectToAction未在帐户控制器

时间:2018-01-21 17:59:23

标签: c# asp.net-mvc asp.net-mvc-4 redirecttoaction

在我的 Global.asax 文件中,我有一个事件 Session_OnEnd ,当会话超时到期时会触发该事件。以下是Global.asax中的代码

protected void Session_OnEnd(object sender, EventArgs e)
{
        Controllers.AccountController obj = new 
             Controllers.AccountController();
        obj.RedirectoLogin();
}

帐户控制器中的代码

 internal void RedirectoLogin()
 {
        ViewBag.Message = "Session Expired";
        RedirectToAction("Login", "Account");
 }

 [AllowAnonymous]
 public ActionResult Login(string returnUrl)
 {
   ViewBag.ReturnUrl = returnUrl;
   return View();
 }

方法被调用。但是没有被重定向到登录页面。

1 个答案:

答案 0 :(得分:0)

Session_OnEnd()方法在服务器端的ASP.Net框架内调用。由于HTTP是无状态的,服务器无法强制用户重定向到新页面(连接可能是长时间关闭的)。

此方法旨在执行一些清理(例如,删除在线用户的数据库记录)。

继@ DavidG的评论之后,如果你想重定向用户,在下一个请求时(当浏览器发送 - now expired - session cookie时),用户将被重定向到登录页面。

如果您的Web应用程序在很大程度上依赖于客户端逻辑,那么与服务器上的会话持续时间匹配的客户端计时器可以在会话到期后触发重定向。