In Asp.net cosa inseriresti negli eventi Session_Start e Session_End in Global.asax?

StackOverflow https://stackoverflow.com/questions/806452

  •  03-07-2019
  •  | 
  •  

Domanda

In caso contrario, potresti fornire qualche spiegazione generica?

È stato utile?

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


  1. L'evento Session_End è supportato solo in modalità InProc.
  2. 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.
  3. Session_End verrà attivato solo:
    (un). Dopo n minuti di inattività (n = valore di timeout),
    o
    (B). Se qualcuno chiama Session.Abandon ().
  4. 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.
  5. 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.
  6. 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 .

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