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