у меня есть проблемы с asp.net c# сайт, посредством чего я устанавливаю объект состояния сеанса на истинный и затем перенаправляю к другой странице, которая должна проверить значение объекта состояния сеанса, и это является пустым.
Иногда это установлено правильно, и другие времена, является просто пустым.
Когда я отлаживаю на своей локальной машине, она работает отлично каждый раз. Только то, когда я загружаю на свой веб-сервер, делает это темпераментное поведение, происходят.
Поскольку это базируется вокруг безопасности сайта, очевидно важно, чтобы данные сессии были допустимы и точными каждый раз.
Действительно ли данные состояния сеанса ненадежны?
AFAIK его набор к inproc, без cookie, 30 минимальных тайм-аутов, ванильная установка IIS.
У кого-либо есть какие-либо предложения? Возможно, мне нужны к thread.sleep промежутку хранение данных сессии и чтение?
NB: время между записью и чтением составляет приблизительно 70 мс.. достаточное количество времени для данных, которые будут записаны в RAM.....
Если состояние сеанса потеряно, обычно это происходит из-за того, что ваш процесс либо перезапускается, либо завершается с ошибкой. Я бы никогда не стал «полагаться» на состояние сеанса между страницами. Вместо этого вы можете попытаться сохранить данные между страницами каким-либо другим способом. Возможно, передача информации через переменные формы или сохранение данных в базе данных.
Профили ASP.NET являются предпочтительным способом сохранения такого рода информации. Вы можете прочитать Рекомендации по управлению состоянием ASP.NET .
У меня нет ответа на вашу конкретную проблему, но Клаудио, я кое-что понимаю.
Я должен сказать, что использование сеанса для безопасности - это уже 90-е годы. Буквально.
FormsAuthentication была разработана, чтобы заменить эту технику, и она довольно хорошо справляется со своей задачей.
Вы должны полагаться на сеанс только для тривиальных проблем, которые легко устранить.
Безопасность не входит в их число.
Нет. Похоже, вы неправильно используете состояние сеанса. Вы не можете рассчитывать на то, что сеанс пользователя будет там. Ваш рабочий процесс ASP.NET может перезапускаться, перезапускать приложение и уничтожать все сеансы, или файл может измениться на вашем веб-сайте, что приведет к перезапуску вашего приложения и очистке всех сеансов, файлы cookie могут быть сброшены на клиенте, могут произойти тайм-ауты и т. Д.
Таким образом, вы должны обеспечить все эти сценарии с помощью состояния сеанса. Старайтесь избегать использования состояния сеанса для подобных вещей. Если вы устанавливаете доступ внутри своего состояния сеанса и точно не знаете, как это работает, вы можете открыть свой сайт из-за множества угроз безопасности.
Все указывает на веб-ферму. Если у вас есть разные веб-серверы в производственной среде, обслуживающей ваше приложение, вы можете поэкспериментировать с этим поведением.
Я не нахожу другого объяснения «РАБОТАЕТ НА МОЕЙ МАШИНЕ!»