在我的 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();
}
方法被调用 。但不被重定向到登录页面。
Session_OnEnd()
方法在服务器端的 ASP.Net 框架内调用。由于 HTTP 是无状态的,因此服务器无法强制用户重定向到新页面(连接可能已长时间关闭(。
此方法旨在执行一些清理(例如,删除联机用户的数据库记录(。
根据@DavidG的评论,如果您想重定向用户,在下一个请求(当浏览器发送 - 现已过期 - 会话cookie时(,用户将被重定向到登录页面。
如果 Web 应用程序严重依赖客户端逻辑,则与服务器上的会话持续时间匹配的客户端计时器可以在会话过期后触发重定向。