Почему я теряю сеансы при работе в режиме StateServer? - PullRequest
4 голосов
/ 23 апреля 2010

Я проверил журналы событий приложений сервера (Win Server 2003) на наличие следующей проблемы http://support.microsoft.com/kb/308097, которая не отображается. Просто кажется, что сессии случайным образом сбрасываются для случайных пользователей

Это настройка одного сервера, без веб-ферм и без балансировки нагрузки

Несмотря на то, что проблема, на которую я указал выше, не встречается в журналах, стоит ли в любом случае увеличивать атрибут stateNetworkTimeout? Конфигурация на данный момент просто

<sessionState mode="StateServer" cookieless="false" stateConnectionString="tcpip=localhost:42424" timeout="60"/>

ОБНОВЛЕНИЕ:

Использование FormsAuth и время ожидания установлено на 60

Настройки IIS6

  1. Повторная загрузка рабочих процессов (в минутах) = 120
  2. Перезапуск рабочих процессов (количество запросов) = 35000
  3. Перезапуск рабочих процессов в следующие моменты времени = не проверено
  4. Максимальная виртуальная память = не проверено
  5. Максимально используемая память = не проверено
  6. Завершение рабочих процессов после простоя = 90
  7. Ограничить очередь запросов ядра = 1500
  8. Все остальное = не проверено

Ответы [ 2 ]

4 голосов
/ 27 июня 2013

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

После того, как я наткнулся на это сообщение в блоге Я просмотрел свой код и, конечно же,все мои операторы Response.Redirect были по умолчанию (например, Response.Redirect (target) или true (например, Response.Redirect (target, true)). После тщательного просмотра моих перенаправлений и установки тех, которые были получены после настройки Sessionпеременные в false (например, Response.Redirect (target, false)) - проблема [казалось бы] решена! Я хотел бы заметить, что вам нужно быть осторожным при этом, так как остальная часть страницы все равно будет выполняться после перенаправления при передаче false.Во многих случаях мне нужно было добавить оператор return сразу после перенаправления, чтобы предотвратить запуск кода, который я не собирался запускать после перенаправления.

Я только потерял переменные сеанса в рабочей среде и под нагрузкой (никогдав разработке или тестировании). Моя теория о том, почему это решило мою проблемуявляется то, что Response.Redirect (по умолчанию / true) принудительно завершает исполняющий поток - если поток все еще занят, работая над сериализацией объектов сеанса и помещая их обратно на сервер состояний, когда он (поток) прерывается, они (объекты сеанса)) может быть потеряно.

0 голосов
/ 02 июня 2010

Вам также необходимо установить время ожидания в разделе аутентификации форм (по умолчанию 30 минут)

http://weblogs.asp.net/scottgu/archive/2005/11/08/430011.aspx

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