2013-11-13 3 views
6

Я сбит с толку. Каждый из наших сотрудников должен войти на наш сервер, который начинает свою сессию ASP. Все проведенные нами исследования показывают, что мы должны иметь возможность изменить, как долго длится этот сеанс с использованием session.timeout x, где x - это количество минут, в течение которых мы хотим, чтобы сессия продолжалась, по умолчанию 20 минут. Я изменил этот тайм-аут без каких-либо последовательных результатов.Классический сеанс ожидания сеанса ASP

Я, наконец, настроил функцию, которая проверяет, я ли я регистрируюсь каждые 10 секунд, чтобы узнать, могу ли я сгладить согласованную длину сеанса. До сих пор время варьировалось от 7 часов до 40 часов в течение 8 испытаний. Я сделал это как в браузере Chrome, так и в браузере firefox, чтобы узнать о разном сеансе, и всегда был установлен в то же время. Тем не менее, коллеги не получают тайм-аута в это точное время.

Я прочитал что-то о global.asa. Мы или не используем это, или никто из нас не понимает его достаточно хорошо, чтобы знать, где он находится.

Я также прочитал и попытался изменить сеансы таймаута для пулов приложений в IIS. Я делаю это из Windows 7, и большинство учебных пособий предназначалось для более старых версий окон, но я считаю, что нашел подходящее место, но я все еще не мог найти, что изменения, которые я делал, имели какое-то значение.

tl; dr - Есть ли способ найти, сколько времени осталось в классической сессии ASP?

ответ

5

Есть несколько вещей, которые могут повлиять на длину таймаута и несколько мест, где можно установить длину. У IIS есть собственный по умолчанию, и это также можно установить на сайте по базе сайта. Вы также можете установить его в своем коде приложения, используя session.timeout, как вы уже сказали.

Если вы создали функцию для проверки наличия активного сеанса, сама функция, вероятно, поддерживает сеанс каждый раз, когда он срабатывает. Именно поэтому вы испытываете такие длительные таймауты сеанса.

Сессия автоматически завершается, если пользователь не запросил или не обновил страницу в приложении в течение определенного периода времени.

global.asa - это файл, который вы можете создать и включить в корневую папку вашего веб-приложения (ов). Если вам нужно или нужно, то просто создайте его.

Формат должен быть примерно таким;

<script language="vbscript" runat="server"> 

sub Application_OnStart 
    'some code 
end sub 

sub Application_OnEnd 
    'some code 
end sub 

sub Session_OnStart 
    'some code 
end sub 

sub Session_OnEnd 
    'some code 
end sub 

</script> 

Для контроля длины сеанса вы можете указать значение;

Sub Application_OnStart 
    Session.Timeout = 30 '30 mins 
End Sub 

Одним из наиболее точных решений, которые я нашел и теперь использовать было бы записать метку первоначального входа и меток времени последней активности для каждого конкретного пользователя в базе данных или печенье. Затем сравните текущую временную метку с данными, хранящимися, чтобы определить, должен ли сеанс заканчиваться. Вы также можете использовать этот тип метода для автоматического перенаправления клиента на страницу входа в систему после установленного времени бездействия или отображения сообщения стиля «ваша сессия истекло».

+0

Хорошо, это приводит меня к правильному пути. Я удалил свою функцию ajax, которая проверяла, был ли сеанс завершен, и теперь кажется, что я получаю согласованные 2-минутные тайм-ауты (время, которое я установил в IIS, а не session.timeout). Это довольно огромный, чтобы иметь какую-то последовательную причину. Однако, если мой 10-секундный вызов ajax был освежающим сеансом, как же я вообще выходил из системы? – Aarmora

+2

@Aarmora пулы приложений IIS, которые обрабатывают состояние сеанса, обычно перерабатываются автоматически, в зависимости от настроек утилиты пула приложений. Это заставит сеанс истекать независимо, хотя обычно не чаще одного раза в день. По умолчанию используется переработка каждые 1740 минут. –

Смежные вопросы