检测用户会话超时的时刻并执行方法

时间:2014-04-09 23:33:44

标签: asp.net-mvc asp.net-mvc-4 session session-timeout simplemembership

我需要在用户注销时更改数据库值。我可以在用户点击“退出”时实现这一点,但是当用户超时时我也需要这样做。是否有某种倾听者或其他方法可以用来达到这个目的?

基本上,由于SimpleMembership不支持在线用户检查,我被迫使用数据库字段,一个布尔值,记录用户是否点击了登录或注销,但显然我无法将此字段设置为& #34;假"如果除非他们点击退出。因此,我需要检测自动注销,可以这么说。

有什么建议吗?

3 个答案:

答案 0 :(得分:2)

请参阅:How to get notified of session end?

如果您正在进行会话,则可以订阅Session_End事件。您将最终(在会话超时过期后)通知会话已结束。

答案 1 :(得分:1)

您将无法订阅任何通知,以便在会话超时时通知您。

相反,您需要跟踪(最有可能在数据库中)用户执行上一次操作的时间。然后进行某种工作,定期检查那些在任何给定时间范围内没有执行过操作的成员并触发注销方法。

答案 2 :(得分:1)

ASP.NET具有会话状态。所以你应该感兴趣的是Session_OnEnd事件。但是你只能使用这种inProc模式。

请参阅:http://msdn.microsoft.com/en-us/library/ms178583.aspx

将此添加到Global.asax

public void Session_OnEnd()
{      
  //Perform your logic.     
}