Javascript отключен после периода неактивности пользователя - PullRequest
2 голосов
/ 09 июля 2011

Я создал внутреннее приложение для пользователей нашей компании. После бездействия пользователя тайм-аута нет, и мы его не хотим. Пользователи жалуются на то, что после определенного времени бездействия (например, 30 минут) веб-приложение начинает вести себя странно, если начинает использовать его снова. Кнопки не работают, поля со списком не выпадают, датчики сбиты. Мне кажется очень ясным, что Javascript отключается после периода неактивности пользователя.

Кто-нибудь сталкивался с таким поведением, и если да, то как мне его предотвратить?

Веб-приложение представляет собой приложение ASP.NET MVC 3.0, использующее расширения Telerik MVC, которое включает в себя написание некоторого Ajax на стороне клиента. Он работает на IIS 6.0 в Windows Server 2003 Standard Edition.

Ответы [ 6 ]

1 голос
/ 09 июля 2011

Я думаю, это связано с тайм-аутом сессии.Поскольку пользователь потерял свое собственное значение сеанса, интеграция ajax с сервером не будет принята сервером, который, в свою очередь, считает, что сайт перестал работать.Исходя из описания, если сайт перестает работать через 30 минут, и пользователь полностью перезагружает страницу с помощью кнопки обновления, пользователю придется повторно войти в систему, поскольку значение сеанса теряется.

Для этого есть несколько решений.

Вам потребуется создать скрытый iframe, который он сам перезагружает каждые 10 минут

Или

Расширение сеансавремя ожидания более 30 минут (1800 секунд)

или

Периодически отправлять ajax-запрос на сервер для поддержания соединения.

1 голос
/ 09 июля 2011

Проверьте, не устанавливает ли скрипт какие-либо куки со значением TTL ~ 30 минут.

0 голосов
/ 23 сентября 2011

Подожди минутку. Я только что заставил этих пользователей проверить это с моим сервером разработки. У них вообще нет этой проблемы. Я узнал, какая разница была на моем сервере разработки. Мы играли с требованием клиентских сертификатов. Мы устанавливаем настройку клиентских сертификатов в IIS на «Принимать клиентские сертификаты». Это вызвало много странного поведения на стороне клиента и зависело от сочетаний браузера и ОС. Установка этого значения обратно на «Игнорировать клиентские сертификаты», похоже, полностью устранила эту проблему.

0 голосов
/ 09 июля 2011

Javascript не перестает функционировать;ваша сессия где-то истекает.Динамические компоненты вашего сайта отказывают в своих запросах к серверам, потому что их сеансовые куки больше не действительны;вам нужно найти, где сеанс изначально устанавливается, и увеличить время истечения сеанса.

0 голосов
/ 09 июля 2011

Сначала я бы попытался запустить событие с заданным интервалом, чтобы увидеть, действительно ли javascript начинает отставать, или же это тайм-аут сеанса, как предлагают другие.документ где-то:

window.onload = function() {
    setInterval(messageLogger, 15000);
};
function messageLogger() {
    var now = new Date();
    console.log(now.getMinutes()); //Or now.getTime() or whatever makes the most sense to you
}

Откройте консоль и проследите за тем, чтобы страница оставалась неактивной некоторое время.Если он продолжает срабатывать каждые 15 секунд в течение неопределенного времени, javascript не отключается, и, скорее всего, это не будет проблемой с вашим кодом javascript.В этот момент я бы начал изучать, может ли это быть проблемой сеанса.Если вы заметили, что сообщения журнала начинают отставать (или прекращаются), значит, где-то произошла утечка памяти в вашем javascript.

0 голосов
/ 09 июля 2011

Это может быть неосновной базой, но иногда возникает утечка памяти, которая может вызвать такого рода поведение.Я столкнулся с этой проблемой с Gmail.Скрипты, работающие в фоновом режиме, могут это сделать.Можете ли вы определить, сколько памяти использует браузер, когда это происходит?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...