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