Ваш режим сеанса установлен в InProc, что означает, что он привязан к этому экземпляру W3WP и очищен при перезапуске. (По крайней мере на IIS6, не уверен насчет IIS7)
Вместо этого используйте StateServer или SqlServer.
Проверьте документацию MSDN о sessionState , особенно статью о режимах состояния сеанса .
Редактировать: Пауло сделал хороший комментарий: сеансы InProc могут хранить практически каждый объект, в то время как StateServer и SqlServer требуют, чтобы они были Сериализуемые . Кроме того, я хотел бы добавить, что они медленнее - вы не можете превзойти скорость сессий InProc, поскольку они хранятся в памяти. С другой стороны: использование State / SqlServer поможет вам, если вам когда-нибудь понадобится добавить балансировку нагрузки в ваше приложение. Есть плюсы и минусы для всех режимов, здесь нужно выбрать яд.