Может ли сеанс ASP.NET жить дольше, чем приложение - PullRequest
5 голосов
/ 08 сентября 2011

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

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

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

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

Ответы [ 2 ]

5 голосов
/ 08 сентября 2011

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

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

4 голосов
/ 08 сентября 2011

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

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