Как вы можете обойти тот факт, что сеансы сбрасываются каждый раз, когда вы развертываете определенные файлы кода на веб-сайте ASP.NET? Иногда нам нужно развернуть критически важное исправление в середине дня, но мы не хотим загружать для этого всех наших пользователей.

7
Matias Nino 8 Янв 2010 в 23:34
Я бы предпочел, чтобы было реализовано сообщение с уведомлением о простоях системы и аккуратно выводило пользователей, чем возиться с горячим патчем, связанным с сеансами.
 – 
curtisk
8 Янв 2010 в 23:39

3 ответа

Лучший ответ

По умолчанию сеансы хранятся InProc. Вам следует выбрать внепроцессный вариант.

Может быть, в вашем сценарии достаточно просто StateServer

8
Rubens Farias 8 Янв 2010 в 23:40
4
Использование StateServer решит проблему. Имейте в виду, что все, что вы хотите поместить в сеанс, должно быть сериализуемым при использовании любого хранилища сеансов вне процесса.
 – 
TonyB
8 Янв 2010 в 23:50

Один из способов - настроить сервер с балансировкой нагрузки. Вы можете направить весь трафик на сервер A, исправить сервер B, а затем повторить все наоборот.

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

Надеюсь это поможет.

1
Paul Suart 8 Янв 2010 в 23:42
Для настройки балансировки нагрузки требуется сервер состояний или другое хранилище сеансов, кроме InProc.
 – 
cederlof
8 Июн 2020 в 11:51

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

Чтобы обойти это, не нужно ничего сохранять в памяти.

Насколько это сложно, зависит от вашей архитектуры.

Одним из решений может быть сохранение информации о сеансе в SQL Server с использованием состояния вне процесса. Обратите внимание, что не используйте сервер состояния в памяти, так как если пул приложений будет переработан, вы потеряете его.

1
76484 29 Сен 2016 в 07:03