Domanda

Questa potrebbe essere una domanda sciocca/zoppa, soprattutto dopo aver lavorato così a lungo con ASP.NET :), ma devo esserne sicuro.

È possibile avere una sessione (ovvero la sessione ASP.NET) sopravvive all'applicazione (App Instance/App Domain/Application Variable)?

In altre parole, se Application_End viene chiamato in Global.asax, indica che non ci sarà una sessione più attiva? E qualsiasi nuova richiesta si tradurrà in un'applicazione_start seguita da una nuova session_start?

Nota, la sessione potrebbe non essere sempre inproc, la sessione potrebbe essere in un server di stato o in un server SQL.

È stato utile?

Soluzione

Con il valore predefinito InProc Stato della sessione, l'applicazione terminerà quando l'ultima sessione è scaduta, a quel punto Application_End si verifica. In questo scenario l'intero appDomain è demolito e tutta la memoria liberata. Man mano che le sessioni sono persistite nella memoria, vengono distrutte permanentemente a questo punto, e quindi non possono mai vivere oltre la vita dell'applicazione.

Se si utilizza Sql Server o State Server Laddove la sessione viene memorizzata su una macchina separata, quindi quando l'applicazione viene demolita le sessioni può continuare a vivere. Quindi, poiché il client conserva il cookie della sessione originale nel browser, la prossima volta che visitano il sito viene riavviata e viene riavviata e sessionid utilizzato per identificare la loro sessione esistente.

Altri suggerimenti

Sì, quando si inserisce lo stato in SQL Server, l'applicazione potrebbe riavviare ma manterrai comunque lo stato di sessione

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top