Веб-сайт, над которым я работаю, очень ориентирован на данные. Для некоторых отчетов требуется больше часа. Всякий раз, когда пользователь отправляет запрос для отчета, создается новый поток, который генерирует отчет. Затем пользователь перенаправляется на страницу, в которой говорится, что текущий отчет, и чтобы обновить его, чтобы загрузить отчет. Если пользователь снова обновляет страницу и отчет все еще выполняется, отображается одно и то же сообщение; в противном случае предоставляется ссылка для скачивания.
Все отношения отчета/пользователя сохраняются в переменной приложения. Это работает отлично, за исключением случаев, когда пользователь неактивен более 20 минут (во время обработки отчета), а затем пользователь выходит из системы; если пользователь снова войдет в систему, отчет можно будет загрузить.
Я не хочу увеличивать время истечения сеанса, но мне нужно остановить истечение, если у пользователя что-то происходит в фоновом режиме, например, при обработке отчета.
В Session_End я могу получить userid
и сопоставить его в Application["work"]
, чтобы увидеть, что у пользователя есть работа или нет.
Однако я не знаю, как я могу отложить сеанс в приведенном выше случае?
Изменить:. Каждый из них предложил в качестве обходного пути от "поддержания контакта" до "использования строки запроса". "Поддержание контакта" выглядело наиболее перспективным для меня, но оно не срабатывало в следующих сценариях: a. Когда браузер закрыт/вычислен, он переходит в режим ожидания во время обеда и т.д. B. Когда пользователь переходит к другому разделу nonasp.net(это старый сайт).
Невозможно ли отменить событие Session_End
?