获取会话到超时为止的剩余时间
本文关键字:余时间 时间 会话 超时 获取 | 更新日期: 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调用,这将延长服务器超时时间。