Как работает сессия в asp.net? - PullRequest
       58

Как работает сессия в asp.net?

28 голосов
/ 04 сентября 2011

Пожалуйста, кто-нибудь подскажет, как на самом деле работает сессия в asp.net?Я запутался в части сессии и хочу кратко узнать об этом, поэтому, пожалуйста, ведите меня

Ответы [ 2 ]

49 голосов
/ 04 сентября 2011

ASP.NET использует cookie для отслеживания пользователей.Когда вы пытаетесь что-то записать в сеанс в первый раз, клиент отправляет cookie, что-то вроде ASP.NET_SessionId.Этот файл cookie отправляется клиентом при последующих запросах.Благодаря этому файлу cookie сервер может идентифицировать клиента и записывать / читать связанные данные сеанса.Важно отметить, что этот файл cookie не является постоянным (не будет работать после перезапуска браузера) и отправляется с флагом HttpOnly , означающим, что клиентские сценарии не могут получить к нему доступ.

В дополнение к файлам cookieВы также можете настроить ASP.NET для использования скрытых полей или добавлять идентификатор сеанса к строке запроса при каждом запросе.

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

По умолчанию есть 3 места, где могут храниться фактические данные сеанса:

  • In-Proc: сеанс сохраняется в памяти приложения (самый быстрый, но если в ферме серверов несколько серверов, это не сработает)
  • Out-of-Proc: данные хранятся на отдельном серверев котором установлена ​​служба состояний (данные хранятся в памяти отдельного компьютера, что означает, что несколько веб-серверов могут работать вb ферма)
  • SqlServer: данные хранятся в SQL Server (это самый медленный, но самый надежный вариант, поскольку данные сеанса хранятся в базе данных SQL Server и могут обслуживать, если происходит сбой сервера сеанса, что не происходит сOut-Of-Proc)
  • Пользовательская реализация: благодаря расширяемости ASP.NET вы можете написать свой собственный поставщик сеансов и хранить данные где угодно.

Вот хорошийстатья о MSDN, в которой рассматривается состояние сеанса ASP.NET .

4 голосов
/ 20 февраля 2015

Сеанс: [Хранится на стороне сервера]

1. Если вы создаете средство сеанса, сервер сохраняет ваши данные сеанса и создает один SessionID.[Данные сеанса с идентификатором SessionID хранятся в поставщике состояний на сервере]

2. Затем сервер возвращает идентификатор сеанса в браузер клиента.

3. Затем можно сохранить возвращенный идентификатор сеанса в файле cookie.

4.Поступление Последующий запрос, прикрепленный к SessionID, может получить доступ к данным сервера.

Примечание: сеанс только для текущего сеанса браузера и для конкретного пользователя.

...