Я столкнулся с проблемой потери сеанса и, наконец, изо всех сил пытался найти основную причину.
Недавно я получил несколько сообщений об ошибках потерянной сессии. Если загрузка сайта низкая, все в порядке. Если нагрузка на сайт высока, возникает проблема потери сеанса. Это очень странно.
Основная причина между настройкой рабочего процесса и состоянием сеанса. Здесь у нас есть 5 рабочих процессов, что означает, что при высокой нагрузке на сайт будут запущены 5 независимых процессов. Пока сеанс хранится в процессе, IIS не может гарантировать, что пользователь клиента будет использовать тот же рабочий процесс.
Например, пользовательский клиент использует процесс A при первом посещении сети, а при втором посещении сети он может использовать процесс B. В процессе B сеанс не сохраняется, поэтому его сеанс потерян.
Почему все нормально, когда загрузка сайта низкая? Потому что IIS будет устанавливать только один рабочий процесс при низкой нагрузке. Так что сессия потерянной проблемы не произойдет. Это объясняет, почему все в порядке, когда я развертываю новую версию и тестирую ее ночью, но ошибка повторяется завтра утром. Потому что загрузка сайта ночью низкая.
Будьте осторожны при использовании состояния сеанса в Process, оно нестабильно, когда нагрузка на ваш сайт будет высокой, и это связано с несколькими рабочими процессами. Попробуйте что-то вроде State Serversession state.