Переключатель сессии на всех! Эта рекомендация имеет 2 аспекта.
- AJAX - не такая быстрая технология, поэтому отключение сеанса в соответствии с рекомендацией Microsoft сокращает время рендеринга на стороне сервера
- Сессия, которая имеет дело с одновременно открытыми 2 страницами, взламывает ajax на обеих из них.
Вы уже упоминали о сбоях на стороне сервера, и список негативов сеанса можно продолжить.
Вместо этого просмотрите ваш код, что действительно нужно хранить в сессии.
Я уверен, что вы можете разделить любые данные на 2 (магическое число) хранилища:
- Данные, которые постоянно передаются между клиентом и сервером (например, аналог сеансового ключа). Сделайте свой собственный ключ и сохраните в скрытых полях или куки. ViewState также хорош, но для оптимизации я предпочитаю контролировать, что именно сохраняется.
- Данные собираются между несколькими страницами, хороший пример - мастер. Накопление данных от пользователя в БД или в профиле пользователя (сохраняется в БД). Для моего проекта мы разработали специальную таблицу TempStorage, где пользователь сохранил данные мастера, и если по какой-то причине пользователь не завершил все шаги в течение 3 дней, таблица очищается заданием.