获取会话到超时为止的剩余时间

本文关键字:余时间 时间 会话 超时 获取 | 更新日期: 2023-09-27 18:12:41

是否有任何方法可以知道在超时发生之前会话对象上剩下多长时间?

我知道如何从webconfig中获得实际超时,但是有什么方法可以知道会话上次活动的时间吗?

我的用户将在我的应用程序中填写大型表格,如果在他们点击"提交"之前超过10分钟,他们将被注销。如果会话即将超时,我想警告他们。我将使用ajax调用进行检查。

获取会话到超时为止的剩余时间

还可以通过后面的一些代码将JavaScript超时设置为Session超时。让它运行您想要的任何JavaScript函数。非常灵活,你不需要检查当前时间……等。

像这样:

"window.setTimeout('yourJSFunctionGoesHere()', " + Session.Timeout + ");";

如果你想提前2分钟发出警告,你可以这样做:

"window.setTimeout('yourWarningJSFunctionGoesHere()', " + Session.Timeout-2 + ");";

我们可以通过定义会话时间&网络上的警告时间。配置并使用计时器来检查页面上经过的时间。

网络。配置:

<appSettings>
  <add key="SessionWarning" value="30" /> 
</appSettings>
<system.web>
   <sessionState timeout="45"/>
</system.web>

Client Page:

<script language="javascript" type="text/javascript">
   /* Page Time Out Warning Message Script */
    var sessionTimeoutWarning = '<%=System.Configuration.ConfigurationSettings.AppSettings["SessionWarning"].ToString()%>';
    var sessionTimeout = "<%= Session.Timeout %>";
    var sTimeout = parseInt(sessionTimeoutWarning) * 60 * 1000;
    var timeOnPageLoad = new Date();
    setTimeout('SessionWarning()', sTimeout);
    //To redirect to the home page
    setTimeout('RedirectToWelcomePage()', parseInt(sessionTimeout) * 60 * 1000);
    //Session Warning
    function SessionWarning() {
        //minutes left for expiry
        var minutesForExpiry = (parseInt(sessionTimeout) -
                                            parseInt(sessionTimeoutWarning));
        var message = "Your session will expire in another " + minutesForExpiry +
                                " mins! Please Save the data before the session expires";
        alert(message);
        var currentTime = new Date();
        //time for expiry
        var timeForExpiry = timeOnPageLoad.setMinutes(timeOnPageLoad.getMinutes()
                                            + parseInt(sessionTimeout));
        //Current time is greater than the expiry time
        if (Date.parse(currentTime) > timeForExpiry) {
            alert("Session expired. You will be redirected to home page");
            window.location = "../Home.aspx";
        }
    }
    //Session timeout add home page where you want to redirect after session timeout
    function RedirectToWelcomePage() {
        alert("Session expired. You will be redirected to home page");
        window.location = "../Home.aspx";
    }
    /* End */
</script>

您可以在javascript变量中跟踪服务器时间DateTime.Now
将其与javascript中的当前时间进行比较。

如果差异达到阈值限制,你可以在javascript中显示一个警告消息。

更好的是,您可以向服务器发起ajax调用,这将延长服务器超时时间。