我只使用会话对象创建一个登录页面。在会话中存储一些值(userId,userName,UserRoleId)。据我所知,会话的默认时间是20分钟。我希望如果用户正在观看某个页面并且会话到期,则将其重定向到登录页面。如果特定会话到期,是否有可能发生自动的事件?所以我在那里写逻辑。 我搜索关于global.asax然后我使用它但它不起作用..
void Session_End(object sender, EventArgs e)
{
Response.Redirect("login.aspx");
}
答案 0 :(得分:0)
在您的母版页上:
Stopwatch stopWatch = new Stopwatch();
在您的母版页上加载:
public Page_Load()
{
if (!page.ispostback)
{
System.Threading.Timer TimerForSessionExpire = new System.Threading.Timer(TickForSessionExpire, null, 0, 6000*60); // check after every 1 minute
}
else
{
stopWatch.reset();
stopWatch.start();
}
}
public void TickForSessionExpire()
{
if (stopWatch.Elapsed.TotalMinutes>20)
{
Response.Redirect("login.aspx");
}
}
我没有对此进行测试,但逻辑应该没问题。
答案 1 :(得分:0)
您可能必须使用javascript在客户端执行此操作。您可以调用一项操作来检查会话状态,然后通过为您的网页设置新位置来重定向用户。
如果要从服务器驱动它,可以使用Signalr和集线器。当会话到期时,集线器调用客户端(仍在js中),您将执行重定向。
答案 2 :(得分:0)
您可以为所有回复添加<meta http-equiv="refresh" content="1205; url=http://domain/login.aspx">
。
将页面重定向为20分钟加5秒后登录login.aspx。