In Asp.net cosa inseriresti negli eventi Session_Start e Session_End in Global.asax?
Domanda
In caso contrario, potresti fornire qualche spiegazione generica?
Soluzione
In Session_Start puoi impostare qualsiasi cosa rilevante per una sessione, dipende molto dall'applicazione.
In generale dovresti evitare Session_End, se possibile, non solo genererà molto tardi (dopo un timeout di sessione) ma in una configurazione multi-server non funzionerà affatto.
Per i dettagli, vedere il tag SessionState in Web.config
Altri suggerimenti
È sempre bene ricordare a noi stessi perché non dovremmo mai usare Session_End
tratto da Comprensione delle modalità di stato della sessione + FAQ
- L'evento Session_End è supportato solo in modalità InProc.
- Session_End non verrà attivato se chiudi il browser. HTTP è a protocollo stateless e il server non ha modo di sapere se il browser lo ha chiuso o no.
- Session_End verrà attivato solo:
(un). Dopo n minuti di inattività (n = valore di timeout),
o
(B). Se qualcuno chiama Session.Abandon ().
- Per il caso (a) (Punto 3), Session_End verrà eseguito da un thread in background, il che implica: (un). Il codice in Session_End è in esecuzione utilizzando l'account del processo di lavoro. Potresti avere problemi di autorizzazione se accedi a risorse come Banca dati. (B). Se si verifica un errore in Session_End, fallirà silenziosamente.
- Per il caso (b) (Punto 3), affinché Session_End sia attivato, lo stato della sessione deve esistere per primo. Ciò significa che devi conservare alcuni dati nello stato della sessione e ha completato almeno una richiesta.
- Anche in questo caso per il caso (b) (Punto 3), Session_End verrà chiamato solo se il la sessione abbandonata viene effettivamente trovata. Di conseguenza, se si crea e si abbandona una sessione all'interno della stessa richiesta, perché la sessione non è stata salvata e quindi non può essere trovato, Session_End non verrà chiamato. Questo è un bug in .NET Framework 1.0 e 1.1.
Session_Start Raccolta di tutte le informazioni dell'utente e archiviazione nel database. Preparazione del sistema per l'utente come file temporaneo, file memorizzato nella cache.
Session_End Salvataggio dello stato utente nel database. Sistema di pulizia ecc.
L'esempio più comune è il conteggio degli utenti online. Aumentare il conteggio su Session_Start
e il contrario su Session_End
.