Как вы можете обойти тот факт, что сеансы сбрасываются каждый раз, когда вы развертываете определенные файлы кода на веб-сайте ASP.NET? Иногда нам нужно развернуть критически важное исправление в середине дня, но мы не хотим загружать для этого всех наших пользователей.
3 ответа
По умолчанию сеансы хранятся InProc
. Вам следует выбрать внепроцессный вариант.
Может быть, в вашем сценарии достаточно просто StateServer
Один из способов - настроить сервер с балансировкой нагрузки. Вы можете направить весь трафик на сервер A, исправить сервер B, а затем повторить все наоборот.
В качестве альтернативы, как заявляет @Curtisk, лучше перейти к этапу, когда вам не нужно делать «горячие исправления» посредством тщательного тестирования, а затем перейти к запланированным отключениям, о которых сообщается заранее.
Надеюсь это поможет.
Причина, по которой это происходит, заключается в том, что развертывание нового кода приводит к перезапуску пула приложений. Затем вы теряете все, что у вас есть в памяти.
Чтобы обойти это, не нужно ничего сохранять в памяти.
Насколько это сложно, зависит от вашей архитектуры.
Одним из решений может быть сохранение информации о сеансе в SQL Server с использованием состояния вне процесса. Обратите внимание, что не используйте сервер состояния в памяти, так как если пул приложений будет переработан, вы потеряете его.
Похожие вопросы
Новые вопросы
asp.net
ASP.NET - это среда разработки веб-приложений Microsoft, которая позволяет программистам создавать динамические веб-сайты, веб-приложения и веб-службы. Полезно использовать этот тег в сочетании с тегом типа проекта, например, [asp.net-mvc], [asp.net-webforms] или [asp.net-web-api]. НЕ используйте этот тег для вопросов о ASP.NET Core - используйте вместо этого [asp.net-core].