2014-10-31 5 views
0

У нас есть веб-приложение базы данных asp.net + MSSQL Server с примерно 100 пользователями. Его размещение в нашей интрасети на IIS7.0. Мы используем Аутентификацию формСохранять пользователей приложений в течение 20 часов

Нам нужно, чтобы пользователи (кто-то, кто вошел в систему) вошли в систему для 20 часов точно. Значит, никто не должен выходить из игры (время сеанса) приложения до 20 часов, даже если он простаивает.

Мы попробовали многие из предложенных подходов, таких как изменения в веб-конфигурации и т. Д., Но ничего не работает.

Наш главный вопрос: будем ли мы делать некоторые изменения кода, чтобы сохранить сеансы пользователя для этого (или любой продолжительности). Может ли кто-нибудь предложить или указать нам на решение?

ответ

0

Всякий раз, когда вы делаете запрос на сервер, тайм-аут сеанса сбрасывается. Таким образом, вы можете просто сделать вызов ajax на пустой обработчик HTTP на сервере, но убедитесь, что кеш обработчика отключен, иначе браузер будет кэшировать ваш обработчик и не будет делать новый запрос.

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

Thanks Shailendra. Мы, наконец, решили проблему с Meta Refresh. Ваше решение не сработало. – Chris