В терминах веб-сайта сеанс - это посещение веб-сайта пользователем, которое может включать в себя несколько просмотров страниц и взаимодействий, когда пользователь перемещается по сайту.Выборы, сделанные пользователем, и любые введенные данные могут быть сохранены во время сеанса и повторно отображены или использованы для соответствующей настройки взаимодействия с пользователем во время сеанса.Ключевым моментом является то, что сеанс представляет собой набор взаимодействий между пользователем и сайтом, а не представляет собой простой набор обслуживаемых статических страниц.Ожидается, что сеансы будут продолжаться только в течение короткого периода времени;если пользователь прекращает отправлять запросы на сайт, через несколько минут сеанс считается завершенным.
HTTP не имеет состояния, поэтому с точки зрения отношений между браузером и веб-сервером сеансы не существуют как физическая сущность.
Логически , ASP.NET имитирует сеанс, распознавая повторяющиеся вызовы пользователя на сайт и сохраняя информацию о состоянии сеанса между вызовами.
Это достигается путем назначения уникального токена («идентификатора сеанса») каждому пользователю в файле cookie при первом обращении к сайту.Каждый раз, когда пользователь вызывает сайт, он представляет файл cookie.ASP.NET распознает его и вызывает все сохраненные данные сеанса для этого токена с постоянного носителя (ASP.NET сохраняет их на стороне сервера, либо в памяти, на сервере состояний или в базе данных SQL).Приложение может считывать и изменять данные сеанса в течение срока действия HTTP-запроса, обычно в ответ на действия пользователя.В конце запроса данные сеанса возвращаются на постоянный носитель.
Таким образом сохраняется иллюзия открытого непрерывного сеанса.Легко судить о начале сеанса - это первый раз, когда пользователю предоставляется токен, а запись сеанса сохраняется на постоянном носителе с отметкой времени.Нет простого ответа относительно того, когда именно заканчивается сессия, потому что HTTP естественным образом не имеет состояния.Поэтому мы должны предположить, что сессия должна быть закрыта по истечении заданного промежутка времени без возврата пользователя на сайт.Это может быть реализовано только по истечении срока действия cookie или путем удаления записи сеанса с носителя постоянных данных путем сравнения с метками времени в данных сеанса с использованием произвольного времени ожидания по нашему выбору.Значение по умолчанию в ASP.NET составляет 20 минут.
Интересным моментом является то, что при использовании SQL Server в качестве среды персистентности сеансов ASP.NET он использует запланированную задачу агента SQL Server для очистки истекших сеансов.Однако, если агент не запущен или не поддерживается (например, в случае выпуска SQL Server Express), сеансы с истекшим сроком не очищаются, и поэтому сеансы не завершатся, пока пользователь продолжает представлять один и тот же маркер сеанса.На практике сеанс заканчивается, когда пользователь закрывает свой браузер, потому что cookie должен затем автоматически удаляться.
Однако, чтобы ответить на ваш конкретный вопрос, обратите внимание, что я говорил о сеансах вконтекст сервера приложений (ASP.NET).Веб-сервер (IIS) вообще не имеет представления о сессиях - единственная роль, которую он играет, заключается в обслуживании и чтении файлов cookie, когда он передает запросы в ASP.NET.