2010-09-29 13 views
0

У меня проблема с потерями переменной сеанса на моем сайте. Он добавляется в случайные моменты, поэтому нет особого поведения, которое вызывает это. Что может быть причиной потери этого сеанса?Потеря сессии в ASP.NET C#

Я читал всюду на этом сайте, что я мог бы поместить свою сессию в режим «sql server», чтобы все было написано на сервере, может ли это быть решением?

Мой сервер находится на общедоступном хостинге 1and1, может быть, это их вина?

Спасибо!

+1

Какая версия IIS? Какая версия .NET? О каких различиях во времени вы говорите - секунды/минуты/часы/дни? – Oded

+0

Не знаю версию МКС, так как это не я, кто ее контролирует. .Net версия 3.5. Кто-то, просматривающий мой сайт, может потерять сессию 1 или 2 раза за 10 минут. Когда-нибудь, 10 минут без проблем. Надеюсь, он ответит на ваш вопрос, если вам нужна дополнительная информация, я могу задать 1And1 хостинг –

ответ

2

Обратитесь к поставщику услуг хостинга, чтобы ваше приложение не размещалось на сервере с балансировкой нагрузки. Если сервер балансирует нагрузку, ваши пользователи потеряют информацию о состоянии сеанса, когда балансировщик нагрузки отправит свой запрос другому серверу. Существует 3 параметра Свойство состояния сеанса: InProc - Будет хранить информацию о состоянии локально на сервере, с которого выполняется запрос (действует только в том случае, если приложение размещается на одном сервере в сбалансированной среде без нагрузки) StateServer - Позволяет специально сконфигурированному серверу размещать информацию о состоянии для всей веб-фермы (я считаю, что StateServer стал предлагаться на платформе .NET Framework версии 2.0). SqlServer - Позволяет специально сконфигурированный экземпляр SQL Server для хранения информации сеанса для веб-фермы [Эта информация будет варьироваться slighty в сценарии веб-сада.]

См MSDN для получения дополнительной информации о состояния сеанса.

Это может произойти очень случайно, основываясь на настройках балансировки нагрузки (подумайте: личная балансировка нагрузки) и может работать в течение нескольких минут один раз и сбой почти сразу в другое время.

Другая возможность - это свойство тайм-аута параметра sessionstate в web.config было установлено на низкое значение (оно находится в минутах), а сеанс истекает.

+0

Для свойства тайм-аута это нормально. Сеанс установлен на 1 час, так что это не проблема. Но балансировка нагрузки действительно интересна. Я буду с нетерпением ждать своей компании, чтобы узнать, делают ли они это. Но я хочу сделать свою сессию в sqlserver. Я продолжу обновлять этот поток и отмечу, что вы ответите как «принятый», как только моя проблема исчезнет :) –

+0

Вы были правы ... Они используют балансировку нагрузки, поэтому каждый раз, когда сервер меняет, я теряю сессию. Но теперь я ищу способ использовать сеанс. Я напишу новый вопрос! Большое спасибо! –

Смежные вопросы