Веб-сайт ASP.NET HttpContext.Items является случайным пустым в HTTPHANDLER - PullRequest
0 голосов
/ 04 июля 2011

У меня возникают проблемы с доступом к объекту HttpContext.Items [typeof (UserProfile)] иногда при вызове обработчика Http, где UserProfile - это объект, сохраненный в файле cookie сеанса с помощью аутентификации форм.

Он работает в 100% случаев, когда я открываю браузер на том же компьютере, на котором он развертывается или отлаживается в Visual Studio, но он случайно завершается неудачно при тестировании с удаленного компьютера.Я включил некоторую трассировку, и в основном HttpContext.Items [typeof (UserProfile)] является нулевым, даже когда cookie-файл сеанса был успешно передан, в соответствии с fiddler.

Я пытался реализовать IReadOnlySessionState в HTTPHandler, но он все ещене работает.Я понимаю, что иногда, после 3 или более минут входа в систему, он работает 100% времени после этого.

Есть идеи, почему это может произойти, и решение?

Thx

1 Ответ

0 голосов
/ 04 июля 2011

Состояние сеанса, Аутентификация с помощью форм и HttpContext.Items не связаны между собой - поэтому не уверен, почему вы их смешиваете.Аутентификация форм имеет свой собственный файл cookie, отдельный от файла cookie сеанса, и время его жизни может быть другим.Вы можете иметь состояние сеанса независимо от того, был ли пользователь аутентифицирован или нет.Я также не уверен, как вы храните объект UseProfile в файле cookie сеанса - советую добавить код.

HttpContext.Items - это пакет свойств, связанный с каждым HttpRequest - обратите внимание, что эта коллекция доступна только для времени жизни запроса, и нет встроенного механизма для сохранения коллекции.Поэтому маловероятно, что вы получите объект UserProfile в этой коллекции, если вы не поместите его туда для каждого запроса в каком-либо модуле или global.asax.Вам нужно объяснить, что именно вы делаете, возможно, с примерами кода!

...