После поиска в Интернете по нескольким ключевым словам я не смог найти решение своей проблемы.
Я начал с поиска способа вывести всплывающее сообщение с просьбой возобновить сеанс за минуту до его отмены. Решение, которое я решил использовать, заключалось в том, чтобы запустить таймер javascript на главной странице и вызвать его на Masterpage.Page_Load(). Таким образом, всякий раз, когда мой пользователь переходит со страницы на страницу, он сбрасывает таймер. Однако, поскольку многие из страниц, которые будет использовать пользователь, имеют панели обновлений и обновляются асинхронно, функция, которую я использую, достигается, но пропускается (согласно отладчику).
Функция, которую я использую:
ScriptManager.RegisterStartupScript(main, this.GetType(), "callTimer", "callTimer();", true);
Эта функция отлично работает с обычными обратными передачами или асинхронными обратными передачами на главной странице (я обновляю таймер, выполняя обратную передачу на панели обновлений на главной странице), однако она будет пропущена при асинхронных обратных передачах.
Я пробовал несколько вещей, делая управление функцией Page или UpdatePanel на главной странице или панелью обновления на дочерних страницах. Я также пытался поместить этот код на дочерние страницы, но хотя эти изменения действительно сбрасывают таймер, это приводит к тому, что код javascript запускается несколько раз, и они борются за метку, отображающую обратный отсчет.
Я действительно в недоумении здесь. Я думаю, что возможным решением было бы изменить управление startscript и снова завершить все javascripts, запущенные до этого кода. Однако поиск способа программно завершить, отменить или остановить функции javascript также не дает полезных результатов.
Другим решением, с которым я бы согласился, является сброс таймера движения мыши, но, поскольку я проектирую для IE8, это не будет работать, если окно не находится вне фокуса.