Развертывание ASP.NET: как избежать потери состояния сеанса при обновлении кода? - PullRequest
7 голосов
/ 08 января 2010

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

Ответы [ 3 ]

7 голосов
/ 08 января 2010

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

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

1 голос
/ 08 января 2010

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

В таком случае можно обойтись без сохранения чего-либо в памяти.

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

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

1 голос
/ 08 января 2010

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

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

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

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