处理会话超时有多种方法,例如“meta刷新”、在加载函数上使用javascript等。
我想要一个简洁的东西:在超时前5分钟,警告用户......
我还在考虑只要浏览器打开,就保持会话处于打开状态(不过还需要弄清楚如何做...可能是一些带有刷新功能的iframe)。
你是如何处理会话超时的,你认为我应该采取什么方向?
处理会话超时有多种方法,例如“meta刷新”、在加载函数上使用javascript等。
我想要一个简洁的东西:在超时前5分钟,警告用户......
我还在考虑只要浏览器打开,就保持会话处于打开状态(不过还需要弄清楚如何做...可能是一些带有刷新功能的iframe)。
你是如何处理会话超时的,你认为我应该采取什么方向?
<img id="keepAliveIMG" width="1" height="1" src="/img/ui/spacer.gif?" />
<script language="javascript" type="text/javascript">
var myImg = document.getElementById("keepAliveIMG");
if (myImg){
window.setInterval(function(){
myImg.src = myImg.src.replace(/\?.*$/, '?' + Math.random());
}, 6000);
}
</script>
protected void Application_AuthenticateRequest(Object sender, EventArgs e)
<%@ WebHandler Language="C#" Class="keepalive" %>
using System;
public class keepalive : System.Web.IHttpHandler
{
public void ProcessRequest (System.Web.HttpContext context)
{
context.Response.ContentType = "text/json";
var thisUser = System.Web.Security.Membership.GetUser();
if (thisUser != null)
context.Response.Write("[{\"User\": \"" + thisUser.UserName + "\"}]");
}
public bool IsReusable
{
get { return false; }
}
}
这里是页面上调用它的脚本(为了简单起见,使用jQuery):
<script type='text/javascript'>
function keepAliveInterval()
{
$.ajax(
{
url: "keepalive.ashx",
context: document.body,
error: function () {
alert("AJAX keepalive.ashx error :(");
}
});
}
$(document).ready(function () {
window.setInterval('keepAliveInterval()', 60000);
});
</script>
使用一些 jQuery,依赖于 web.config 中的会话超时变量。您可以使用 this Jquery 延迟技巧,在特定时间(页面加载后 x 分钟)发生时,弹出一个 div,显示会话在 x 分钟后超时。非常好看、干净和简单。
关于会话超时,Codesleuth 的 ajax 调用是完美的。
onerror
事件,否则页面无法警告用户。 - Codesleuth