Ответ 1
Состояние сеанса в памяти сохраняется в памяти рабочего процесса IIS. Когда вы перезапускаете пул приложений, вы фактически останавливаете и перезапускаете рабочий процесс, поэтому любое состояние, удерживаемое рабочим процессом, включая все объекты сеанса, теряется. Итак, да, вам нужно хранить данные сеанса за пределами рабочего процесса IIS, например, в SQL, чтобы не "уничтожать" данные сеанса пользователя.