我在MVC应用程序中工作。我要求在会话结束时,应用程序应重定向到主页。我需要一般地实现这个逻辑。
我做了一些研究,看起来有一个要求是我需要在global.asax中的Session_Start中设置任何会话。然后,当会话到期时,应触发global.asax中的Session_End。在会话结束时,我需要确保:
对我来说,完成上述#1和#2的最佳方式是什么?
protected void Session_Start(object sender, EventArgs e)
{
Session["X"] = 1;
}
protected void Session_End(object sender, EventArgs e)
{
}
答案 0 :(得分:0)
重定向只能在HTTP响应中发出(它是响应头,通常是302状态)。 HTTP响应只能在响应HTTP请求时发送。因此,如果您想重定向浏览器,则只能在请求下一页时执行此操作。当session_end事件发生时,您无法神奇地触及浏览器并使其执行某些操作。
将此作为服务器端事件处理不是正确的方法。您需要向页面添加Javascript以跟踪剩余的会话时间,并使用location.href而不是使用重定向。例如,对于十分钟的超时,您可以使用以下内容:
setTimeout(function(){ location.href="https://www.example.com/timeout.aspx"; }, 600000);