保持应用程序用户登录20小时
问题描述:
我们有一个基于asp.net + MSSQL Server数据库的基于Web的应用程序,大约有100个用户。它在IIS7.0上的我们的Intranet上托管。我们正在使用表单身份验证保持应用程序用户登录20小时
我们需要让用户(任何登录的用户)准确登录20小时。意味着即使他闲置,也不应该在20小时之前将应用程序踢出(会话结束时间)。
我们尝试了许多建议的方法,如网络配置更改等,但没有任何工作。
我们的主要问题是:我们需要做一些代码更改以保持用户会话在此(或任何持续时间)内保持活动状态。有人可以建议或指出我们的解决方案?
答
只要向服务器发出请求,会话超时就会重置。所以你可以对服务器上的一个空的HTTP处理器进行ajax调用,但要确保处理器的缓存被禁用,否则浏览器将缓存你的处理器并且不会发出新的请求。
KeepSessionAlive.ashx.cs
public class KeepSessionAlive : IHttpHandler, IRequiresSessionState
{
public void ProcessRequest(HttpContext context)
{
context.Response.Cache.SetCacheability(HttpCacheability.NoCache);
context.Response.Cache.SetExpires(DateTime.UtcNow.AddMinutes(-1));
context.Response.Cache.SetNoStore();
context.Response.Cache.SetNoServerCaching();
}
}
.JS:
window.onload = function() {
setInterval("KeepSessionAlive()", 60000)
}
function KeepSessionAlive() {
url = "/KeepSessionAlive.ashx?";
var xmlHttp = new XMLHttpRequest();
xmlHttp.open("GET", url, true);
xmlHttp.send();
}
谢谢Shailendra。我们终于用Meta Refresh解决了这个问题。您的解决方案不起作用。 – Chris 2014-11-12 10:33:59