【问题标题】:只要用户处于活动状态,asp.net C# 就保持会话处于活动状态
【发布时间】:2022-01-23 12:12:52
【问题描述】:

我使用 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);
}

【问题讨论】:

    标签: c# asp.net session


    【解决方案1】:

    先不说应用的超时 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'; 
      }
    &lt;script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.0/jquery.min.js"&gt;&lt;/script&gt;

    然后为了使应用程序活跃,您也需要一些时间间隔来回发到代码后面。

    【讨论】:

    • 感谢重播我尝试了你的答案,但它没有注销并完成会话
    • 它没有注销并结束会话,你的意思是它没有进入 login.aspx 或者它进入页面并且没有终止用户的会话。您能否通过删除 $('body').mousemove 部分来验证 JavaScript 是否正常工作?
    • 即使我设置 MilliSecondsTimeOut = 600 并离开鼠标,会话仍保持活动状态并永远结束,但会话仍处于活动状态,但如果我不移动鼠标,它应该结束
    • 另外代码第一行有个小错误应该是这样的: $(document).ready(function () {
    • 对不起,我的代码有一些错误。我更新了我的脚本,请尝试/从代码 sn-p 编辑它,警报 1 表示重定向被调用
    猜你喜欢
    • 2018-11-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-05
    • 2017-10-21
    • 2012-03-06
    • 1970-01-01
    相关资源
    最近更新 更多