Web应用程序中的会话超时

时间:2019-01-30 10:36:56

标签: c# asp.net ajax session iis

在aspx Webform应用程序中。 我已经设置了session.timeout 10分钟。

但是该网页每5分钟发送一次自动ajax请求(使用javascript计时器)

因此,即使用户闲置超过10分钟也不会发生会话超时。

如果用户保持空闲状态,则用户会话应在10分钟后过期,请勿考虑自动ajax请求。有没有办法检查上一次手动用户交互时间?

任何解决方案将不胜感激

1 个答案:

答案 0 :(得分:1)

这是一个使用JQuery的简单脚本,用于处理mousemove和keypress事件。如果时间到了,页面将重新加载。

客户端

 <script type="text/javascript">
    var idleTime = 0;
    $(document).ready(function () {
        //Increment the idle time counter every minute.
        var idleInterval = setInterval(timerIncrement, 60000); // 1 minute

        //Zero the idle timer on mouse movement.
        $(this).mousemove(function (e) {
            idleTime = 0;
        });
        $(this).keypress(function (e) {
            idleTime = 0;
        });
    });

    function timerIncrement() {
        idleTime = idleTime + 1;
        if (idleTime > 9) { // 10 minutes
           // Here You'd have to have a little ajax call to server to set all session variable value as null.
        }
    }
    function setAllSessionNull(){
//make ajax call to server to set all session variable value as null.
// redirect to login page
}
    </script>

c#代码以获取所有会话并设置为空

 for (int i = 0; i < Session.Count; i++)
            {
                Session.Remove(Session.Keys[i]); 

            }