Истечение сеанса ASP до установки тайм-аута - PullRequest
3 голосов
/ 04 июня 2009

Некоторые из моих старых программ используют ASP (не ASP.Net), и даже если я установлю длительное время истечения сеанса, например, на 20 минут, иногда на короткое время (например, на несколько минут), я все равно заметю окно ошибки истечения сеанса & ndash;

"слишком много времени простоя, пожалуйста, войдите снова."

Есть идеи для дальнейшего анализа? Не уверен, является ли это моей ошибкой кода или проблемой конфигурации сервера (браузера), поскольку не все комбинации клиент / сервер встречаются с этой странной проблемой.

Поле истечения сеанса вызывается моим кодом:

<%
    if session("timeToken") = "" then
%>

<script language = "JavaScript">
<!--
window.alert ("too much idle time, please login again");
//-->
</script>
<%
response.End()
end if
%>

Ответы [ 4 ]

1 голос
/ 04 июня 2009

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

Разные причины, по которым пул приложений может быть настроен, вызывают перезапуск.

Проверьте журналы событий, когда у вас есть неожиданный таймаут, что-нибудь там выглядит необычно?

1 голос
/ 04 июня 2009

Убедитесь, что ваш сайт находится в тех же самых чувствительных к регистру папках

например.

http://myserver.com/MyWebSite/

не имеет того же файла cookie сеанса, что и

http://myserver.com/mywebsite/

Так что он выйдет из системы.

1 голос
/ 04 июня 2009

Это может быть ограничение IIS на время ожидания вашего приложения.

Попробуйте это:

  1. Щелкните правой кнопкой мыши папку приложения в IIS
  2. Затем перейдите в Свойства -> Вкладка Виртуальный каталог -> Затем нажмите кнопку конфигурации справа внизу
  3. Если он отключен, то сначала создайте приложение, нажав кнопку «Создать»
  4. В окне конфигурации нажмите на вкладку «Параметры», и вы увидите, что время сеанса по умолчанию установлено на 20 (минут)

надеюсь, что это ответ на ваши молитвы:)

1 голос
/ 04 июня 2009

Пара идей на основе вашего обновления:

  1. Есть ли другая причина, по которой ваш session("timeToken") может быть пустым? Где-то еще кусок кода или, возможно, переменная где-то написана с ошибкой?

  2. Как в вашем коде изменяется действительное значение session("timeToken")? Это установлено, когда сессия начинается? Периодически обновляется? Какое значение оно хранит?

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

Обновление:

  • Состояние сеанса ASP обычно поддерживается с помощью файлов cookie. Можете ли вы убедиться, что на клиенте включены файлы cookie?
  • Обслуживает ли приложение ASP более одного сервера? Если он обслуживается веб-фермой или кластером, вам необходимо убедиться, что состояние сеанса может сохраняться на всех компьютерах или что сеанс пользователя «завис», то есть он всегда обслуживается одним и тем же сервером.

Дополнительную информацию и помощь можно найти здесь: http://msdn.microsoft.com/en-us/library/ms972338.aspx

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