Sessionstate, не сохраняемый между страницами

у меня есть проблемы с asp.net c# сайт, посредством чего я устанавливаю объект состояния сеанса на истинный и затем перенаправляю к другой странице, которая должна проверить значение объекта состояния сеанса, и это является пустым.

Иногда это установлено правильно, и другие времена, является просто пустым.

Когда я отлаживаю на своей локальной машине, она работает отлично каждый раз. Только то, когда я загружаю на свой веб-сервер, делает это темпераментное поведение, происходят.

Поскольку это базируется вокруг безопасности сайта, очевидно важно, чтобы данные сессии были допустимы и точными каждый раз.

Действительно ли данные состояния сеанса ненадежны?

AFAIK его набор к inproc, без cookie, 30 минимальных тайм-аутов, ванильная установка IIS.

У кого-либо есть какие-либо предложения? Возможно, мне нужны к thread.sleep промежутку хранение данных сессии и чтение?

NB: время между записью и чтением составляет приблизительно 70 мс.. достаточное количество времени для данных, которые будут записаны в RAM.....

5
задан Grant 3 May 2010 в 13:29
поделиться

4 ответа

Если состояние сеанса потеряно, обычно это происходит из-за того, что ваш процесс либо перезапускается, либо завершается с ошибкой. Я бы никогда не стал «полагаться» на состояние сеанса между страницами. Вместо этого вы можете попытаться сохранить данные между страницами каким-либо другим способом. Возможно, передача информации через переменные формы или сохранение данных в базе данных.

Профили ASP.NET являются предпочтительным способом сохранения такого рода информации. Вы можете прочитать Рекомендации по управлению состоянием ASP.NET .

1
ответ дан 14 December 2019 в 08:45
поделиться

У меня нет ответа на вашу конкретную проблему, но Клаудио, я кое-что понимаю.

Я должен сказать, что использование сеанса для безопасности - это уже 90-е годы. Буквально.

FormsAuthentication была разработана, чтобы заменить эту технику, и она довольно хорошо справляется со своей задачей.

Вы должны полагаться на сеанс только для тривиальных проблем, которые легко устранить.

Безопасность не входит в их число.

2
ответ дан 14 December 2019 в 08:45
поделиться

Нет. Похоже, вы неправильно используете состояние сеанса. Вы не можете рассчитывать на то, что сеанс пользователя будет там. Ваш рабочий процесс ASP.NET может перезапускаться, перезапускать приложение и уничтожать все сеансы, или файл может измениться на вашем веб-сайте, что приведет к перезапуску вашего приложения и очистке всех сеансов, файлы cookie могут быть сброшены на клиенте, могут произойти тайм-ауты и т. Д.

Таким образом, вы должны обеспечить все эти сценарии с помощью состояния сеанса. Старайтесь избегать использования состояния сеанса для подобных вещей. Если вы устанавливаете доступ внутри своего состояния сеанса и точно не знаете, как это работает, вы можете открыть свой сайт из-за множества угроз безопасности.

2
ответ дан 14 December 2019 в 08:45
поделиться

Все указывает на веб-ферму. Если у вас есть разные веб-серверы в производственной среде, обслуживающей ваше приложение, вы можете поэкспериментировать с этим поведением.

Я не нахожу другого объяснения «РАБОТАЕТ НА МОЕЙ МАШИНЕ!»

2
ответ дан 14 December 2019 в 08:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: