странность тайм-аута сессии - PullRequest
0 голосов
/ 06 февраля 2011

У меня есть основной сайт, где люди входят в систему. Это IIS и стандартное время сеанса из 20 минут.

В этом же домене есть всплывающее окно чата. Там нет вовлеченных https.

Несмотря на то, что окно чата делает Ajax-вызовы на сервер каждые несколько секунд (и всегда возвращает хотя бы один фрагмент данных), он также отправляет данные на сервер через Ajax всякий раз, когда вошедший в систему пользователь отправляет сообщение, которое он тайм-аут через 20 минут, как будто ничего не происходит.

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

Ответы [ 3 ]

1 голос
/ 07 февраля 2011

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

Таким образом, плакаты остаются в системе, а скрывающиеся пользователи сталкиваются.

На нагрузке:

response.cookies("chatuser")=nickname
response.cookies("chatuser").expires=now()+0.5

На сообщение отправлено:

response.cookies("chatuser").expires=now()+0.5
0 голосов
/ 07 февраля 2011

Вы действительно отправляете какую-либо информацию о куки с вашими запросами AJAX?

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

0 голосов
/ 07 февраля 2011

Похоже, что вы используете проверку подлинности с помощью форм и истекает срок действия файла cookie проверки подлинности.

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

Проверка подлинности с помощью форм может работать двумя способами.Вы можете держать пользователя в системе в течение фиксированного периода времени или использовать скользящий срок действия.Например:

<authentication mode="Forms">
    <forms defaultUrl="~/Default.aspx"
        loginUrl="~/Login.aspx"
        slidingExpiration="true"
        timeout="15" />
</authentication>

Приведенное выше значение устанавливает время ожидания для проверки подлинности форм на 15 минут, но также включает скользящее истечение срока действия (slidingExpiration="true". При условии, что пользователь повторно посещает сайт в течение 15 минут, срок действия файла cookie увеличивается,пользователь останется аутентифицированным.

Если slidingExpiration="false", то пользователь будет выгнан через 15 минут независимо от того, когда он последний раз заходил на сайт.

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

...