потерянное состояние сеанса в ASP.NET - PullRequest
0 голосов
/ 25 февраля 2019

Я новичок в ASP.NET и просто вопрос о состоянии сеанса.Я читал учебник, в котором говорится:

состояние сеанса будет потеряно, если пользователь закроет и перезапустит браузер, а сеанс фактически останется в памяти на веб-сервере, поскольку ASP.NET не имеет представлениячто клиент закрыл браузер или изменил окна.Сеанс будет сохраняться в памяти, оставаясь недоступным , пока не истечет время его окончания

Я не совсем понимаю, что означает «оставаться недоступным», потому что файл cookie называется «ASP».NET_SessionId "будет создан впервые, когда коллекция сеансов используется на компьютере клиента, поэтому даже когда пользователи закрывают, а затем перезапускают свои браузеры и снова получают доступ к странице, поэтому файл cookie, содержащий идентификатор сеанса, все равно будет отправляться на сервер,если сеанс все еще остается в памяти на веб-сервере, почему он недоступен?

1 Ответ

0 голосов
/ 25 февраля 2019

ASP.NET_SessionId cookie создается как «сеансовый cookie» (не «постоянный» - Как создать постоянный или непостоянный cookie? ) и когда браузер полностью закрывается (сейчас это случается редко)дней) браузер удалит все «сеансовые» куки.Поскольку значение cookie является криптографически безопасным случайным числом, нет практического способа восстановить значение cookie и, следовательно, получить значение старого сеанса с сервера.Данные, связанные со значением cookie, будут храниться в памяти сервера (или SQL, если вы используете состояние сеанса SQL), но не будет запросов, которые могут его запросить.В конечном итоге данные будут очищены, когда истечет срок действия на стороне сервера (или процесс IIS сервера завершит работу в случае состояния сеанса в памяти).

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...