Поиск и устранение неисправностей
Потеря данных каждые несколько секунд необычна, возможно, у вашего провайдера виртуального хостинга может возникнуть проблема - похоже, сервер почему-то постоянно прерывает сеансы. Вы можете отобразить sessionID (Session.SessionID) и посмотреть, изменится ли он.
Может произойти сбой процесса, вызванный кем-то еще на сервере. Вот сообщение в блоге msdn, посвященное устранению проблем такого типа (прокрутите вниз примерно на 25%): http://blogs.msdn.com/webtopics/archive/2009/07/22/in-proc-session-state-management.aspx
Это не очень поможет вам в среде общего хостинга, но вы можете пропустить это по цепочке поддержки. Возможно, они могли бы посмотреть журналы событий и определить, кто нарушает IIS, и дать им загрузку.
Как сказал Шон МакДоно:
... учитывая, что вы находитесь на виртуальном хостинге
окружающая среда, есть достойный шанс
что существует более одного веб-сервера
хостинг вашего сайта. Если несколько серверов
обслуживаем ваш сайт и нагрузку
используется механизм балансировки, который
не поддерживает никакой сессии
близость, вы можете просто подпрыгивать
на другой веб-сервер и запуск
новый сеанс; в конце концов, в процессе
сессия не будет следовать за вами
через коробки.
Альтернативы государственному сопротивлению
Во всяком случае, я всегда обнаруживал, что InProc ненадежно неустойчиво даже на выделенных серверах, поэтому я избегаю его.
Будьте осторожны с файлами cookie - файлы cookie передаются вместе с каждым запросом (изображения, сценарии и т. Д.) И должны быть сведены к минимуму. Вы можете подумать: «Мех, этот проект не нужно масштабировать», но как только вы примете проектное решение в рамках всего проекта, что вы собираетесь использовать куки для сохранения своего состояния, вы отправляетесь в круиз для пословиц.
И под этим я подразумеваю, что вы выходите из передового опыта и можете столкнуться с некоторыми уродливыми ситуациями, такими как то время, когда мне нужно было сохранить документ XML на секунду. Это не было бы хорошей идеей в печенье!
Если у вас нет способа настроить сервер состояний сеанса (что, впрочем, очень просто), потому что вы находитесь в среде общего хостинга, вы можете заглянуть в SqlSessionStateStore, который позволяет хранить данные вашего сеанса в SQL Server.