Session没有被MVC3破坏

时间:2013-01-02 13:32:08

标签: asp.net-mvc-3 session-timeout

我正在尝试使用此jquery函数

检查会话是否每5秒仍然存活
setTimeout(IsSessionAlive, 5000);

 function IsSessionAlive()
 {
    $.getJSON('@Url.Action("IsSessionAlive", "Account")', function (isAlive) {
       if (!isAlive)
         alert(isAlive);
         setTimeout(IsSessionAlive, 5000);
     });
 }

这就是我尝试从服务器

获取会话状态的方法
public JsonResult IsSessionAlive()
{
   var isA = Request.IsAuthenticated;
   return Json(Session["LoggedIn"] != null, JsonRequestBehavior.AllowGet);
}

只是为了测试我在LogOn上执行此操作的代码

Session["LoggedIn"] = true;
Session.Timeout = 1;

我希望它在1分钟不活动后会破坏会话,当我的jquery检查会话时它会发现它为null并且会向用户显示你必须再次输入密码的弹出窗口。 但我从来没有发现会话无效! 有什么想法吗?

1 个答案:

答案 0 :(得分:0)

您可以使用jQuery idleTimer plugin&来检测空闲超时。一旦发生超时,就会显示弹出窗口。

示例代码:

// idleTimer() takes an optional argument that defines the idle timeout
// timeout is in milliseconds; defaults to 30000
$.idleTimer(10000);


$(document).bind("idle.idleTimer", function(){
 // function you want to fire when the user goes idle
});


$(document).bind("active.idleTimer", function(){
 // function you want to fire when the user becomes active again
});

// pass the string 'destroy' to stop the timer
$.idleTimer('destroy');