Может ли сеанс ASP.NET жить дольше, чем приложение

Это может быть глупый / слабый вопрос, особенно после долгой работы с ASP.NET:), но я должен быть уверен.

Возможно ли, чтобы сессия (то есть сессия ASP.NET) переживала приложение (экземпляр приложения / домен приложения / переменная приложения)?

Другими словами, если Application_End вызывается в Global.asax, означает ли это, что больше не будет активного сеанса? и любой новый запрос приведет к Application_Start, за которым следует новый Session_Start?

Обратите внимание, что сеанс не всегда может быть InProc, сеанс может быть на сервере состояний или на сервере SQL.

2 ответа

Решение

По умолчанию InProc состояние сеанса, приложение будет завершено по истечении последнего сеанса, в этот момент Application_End происходит. В этом сценарии весь appDomain сносится и вся память освобождается. Поскольку сеансы сохраняются в памяти, они навсегда уничтожаются на этом этапе и, следовательно, никогда не могут существовать после срока службы приложения.

При использовании Sql Server или же State Server если сеанс хранится на отдельном компьютере, то после закрытия приложения сеансы могут продолжать жить. Затем, поскольку клиент сохраняет исходный файл cookie сеанса в браузере, при следующем посещении сайта сеанс перезапускается, и sessionid используется для идентификации их существующего сеанса.

Да, когда вы помещаете состояние в SQL Server, приложение может перезапуститься, но вы все равно будете поддерживать состояние сеанса

Другие вопросы по тегам