我有一个模拟测试页面(不需要身份验证),并将用户选择数据存储在会话变量中,并在结果页面上检索这些会话中的数据。会话超时设置为20分钟,滑动到期为真。有时用户闲置超过20分钟(默认超时)。我想仅在会话超时和重定向时显示警报。我打开使用javascript,jquery或asp.net c#。我见过类似的问题&回答尝试过Global.asax会话结束和jquery解决方案,但似乎没有一个对我有用。任何机构都可以根据我的要求给我一个例子吗?感谢
答案 0 :(得分:1)
http://www.codeproject.com/Articles/227382/Alert-Session-Time-out-in-ASP-Net http://www.codeproject.com/Articles/24669/JavaScript-to-Show-Session-Timeout-Counter
我遇到了类似的问题,我尝试了这两个链接
我希望这可以帮助你... ...)
答案 1 :(得分:1)
这对我来说很完美
override protected void OnInit(EventArgs e)
{
base.OnInit(e);
//It appears from testing that the Request and Response both share the
// same cookie collection. If I set a cookie myself in the Reponse, it is
// also immediately visible to the Request collection. This just means that
// since the ASP.Net_SessionID is set in the Session HTTPModule (which
// has already run), thatwe can't use our own code to see if the cookie was
// actually sent by the agent with the request using the collection. Check if
// the given page supports session or not (this tested as reliable indicator
// if EnableSessionState is true), should not care about a page that does
// not need session
if (Context.Session != null)
{
//Tested and the IsNewSession is more advanced then simply checking if
// a cookie is present, it does take into account a session timeout, because
// I tested a timeout and it did show as a new session
if (Session.IsNewSession)
{
// If it says it is a new session, but an existing cookie exists, then it must
// have timed out (can't use the cookie collection because even on first
// request it already contains the cookie (request and response
// seem to share the collection)
string szCookieHeader = Request.Headers["Cookie"];
if ((null != szCookieHeader) && (szCookieHeader.IndexOf("ASP.NET_SessionId") >= 0))
ScriptManager.RegisterStartupScript(this, this.GetType(), "Redirect", "alert('Your session has timed out due to inactivity. Please start the test again'); window.location.reload()", true);
}
}
}
答案 2 :(得分:0)
idleTime = 0;
$(document).ready(function () {
var idleInterval = setInterval(timerIncrement, 5000);
$(this).mousemove(function (e) {
idleTime = 0;
});
$(this).keypress(function (e) {
idleTime = 0;
});
});
function timerIncrement() {
idleTime = idleTime + 1;
if (idleTime >12 ) { //60 secs
alert("session expired");
window.location.href="a3.html";
}
}
这种编码有助于在60secs
之后的会话超时和重定向在提醒后的另一个页面