检测Asp.Net MVC 5 Razor应用程序中的会话到期时间

时间:2015-02-05 05:52:06

标签: asp.net asp.net-mvc asp.net-mvc-5

我正在开发Asp.Net MVC 5 Razor应用程序。我正在维护单独的表来维护登录信息。当用户登录时,我在该表中的登录成功回调中将'true'放在字段(IsLoggedIn)中。当用户注销时,我在注销模块的成功回调中将'false'放在该字段中。

我有一个问题。如果用户没有按下注销按钮,并且其会话已过期,则会注销。我没有调用注销成功回调,数据库中的'IsLoggedIn'字段对该用户仍然显示为真。

我无法找到有关如何检测会话到期事件的任何内容,并调用我的表更新函数将'IsLoggedIn'字段中的'false'放入用户行?

任何帮助?

1 个答案:

答案 0 :(得分:0)

如果您的应用程序使用InProc SessionState模式(如果未指定,这是ASP.net中的默认设置),则可以在Global.asax中的Session_End事件中处理会话超时。

void Session_End(object sender, EventArgs e) {
    // perform your logic
}

在此之前记住一件事事件将被调用,但不一定在超时之后。

还考虑到According to MSDN,HttpSessionState.Timeout属性有一个setter,可以在应用程序的代码中更改,也可以在web.config中永久更改

希望这有帮助