asp.net 只要用户处于活动状态,C# 就会使会话保持活动状态

asp.net C# keep the session alive as long as the user is active

我使用 asp.net C# 制作了一个简单的 Web 应用程序,并编写了一段代码以自动从网站注销并在会话过期时将用户重定向到登录页面,但我有一个问题是网站注销并将用户重定向到登录页面,即使用户处于活动状态并单击按钮并移动鼠标也是如此,在这种情况下,我希望会话处于活动状态并在用户在超时期间不执行任何操作时使其过期和大多数网站一样。

这是我结束会话的代码:

web.config:

<sessionState timeout="1"></sessionState>

main_page.aspx:

protected override void OnPreRender(EventArgs e)
{
    base.OnPreRender(e);
    AutoRedirect();
}

public void AutoRedirect()
{
    int int_MilliSecondsTimeOut = (this.Session.Timeout * 6000);
    string str_Script = @"
           <script type='text/javascript'> 
               intervalset = window.setInterval('Redirect()'," +
                   int_MilliSecondsTimeOut.ToString() + @");
               function Redirect()
               {
                   window.location.href='/login.aspx'; 
               }
           </script>";

    ClientScript.RegisterClientScriptBlock(this.GetType(), "Redirect", str_Script);
}

先不说应用程序的超时 How to set session timeout in web.config

在你的 Javascript 我认为你需要停止 setInterval Stop setInterval call in JavaScript

所以为什么不使用 aspx 页面的 javascript 中的所有任务,例如

$(document).ready(function(){
     ResetTheTimer();
     $('body').mousemove(function() { // or other events
           ResetTheTimer();
           alert('clear!');
     });
 
});
var intervalset ;
var MilliSecondsTimeOut = 12000;
function ResetTheTimer(){
    
    clearInterval(intervalset);
    intervalset = window.setInterval(Redirect,  MilliSecondsTimeOut );
             
}
  function Redirect()
  {alert(1);   
  //window.location.href='/login.aspx'; 
  }
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.0/jquery.min.js"></script>

然后要使应用程序保持活动状态,您也需要一些时间间隔来回发到后台代码。