2014-10-31 46 views
0

我们有一个基于asp.net + MSSQL Server数据库的基于Web的应用程序,大约有100个用户。它在IIS7.0上的我们的Intranet上托管。我们正在使用表单身份验证保持应用程序用户登录20小时

我们需要让用户(任何登录的用户)准确登录20小时。意味着即使他闲置,也不应该在20小时之前将应用程序踢出(会话结束时间)。

我们尝试了许多建议的方法,如网络配置更改等,但没有任何工作。

我们的主要问题是:我们需要做一些代码更改以保持用户会话在此(或任何持续时间)内保持活动状态。有人可以建议或指出我们的解决方案?

回答

0

只要向服务器发出请求,会话超时就会重置。所以你可以对服务器上的一个空的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(); 
     } 
+0

谢谢Shailendra。我们终于用Meta Refresh解决了这个问题。您的解决方案不起作用。 – Chris 2014-11-12 10:33:59