Newsgroup: it.comp.www.asp
Titolo: Neofita (ma non troppo) Session_OnEnd

Ho letto quasi tutti i msg precedenti ed ho un dubbio da risolvere..
se inserisco un codice (ad es. accesso ad un db e scrittura record) in
Session_OnStart appena un utente visita il sito il codice viene eseguito...
se lo inserisco in Session_OnEnd da quel che ho capito DOVREBBE essere
eseguito quando abbandono quel sito per navigare su un altro sito web??!!
ma dai vari msg sembra che non "funzichi" bene e aspetta i canonici 20
minuti per essere eseguito?
Io ho provato (2 pc: 1 con winNT4(server) e1 Win 98(client))
in Session_OnStart fa tutto (scrive un rec)
Session_OnEnd  (aggiorna il rec) sembra proprio che non ci sia!!...eppure
sul server c'č!
Come sta realmente la cosa? Chi me lo spiega per bene?
Vorrei fare un progetto di test che quando un utente abbandona il sito web
succede qualcosa (tipico scrive un rec) ed avevo pensato a
Session_OnEnd...Help!
Grazie per la pazienza!

Session_OnEnd() viene eseguito quando la sessione viene chiusa o scade,
quindi per eseguire il codice devi o aspettare che scada o chiudere la
finestra del browser non cambiare sito nella stessa finestra e basta.
ciao, Nicola
----------------------------------------------------------------------------
-------------
vieni su
www.pignatelli.com
Risorse Web per principianti e non
----------------------------------------------------------------------------
-------------

Ecco l'ordine degli eventi (oramai è un copia-incolla):
Application_OnStart:
===============
Evento generato per "attivare" l'Applicazione quando il primo utente visita
un file ASP nella cartella applicazione. Quindi se il sito web è avviato da
10 giorni, ma non ha ricevuto alcuna visita in quella cartella, quest'evento
non viene generato e questo codice non viene eseguito. Si usa per
inizializzare variabili o oggetti comuni a tutti gli utenti dell'area
applicazione.
Session_OnStart:
==============
Evento generato quando un "nuovo" utente visita il sito web. La routine
viene eseguita per ogni "nuovo" utente. Dato che la traccia di una sessione
esistente viene seguita in base ad un cookie, se l'utente ha disattivato i
cookie, ad ogni richiesta il server penserà di avere a che fare con un
"nuovo" utente e quindi creerà una "nuova sessione". Se le sessioni sono
fondamentali, o si installa il filtro ISAPI "Cookie Munger" o si tiene
traccia dell'utente in qualche altro modo (
p.es
. tramite la stringa
d'interrogazione). Bene in questi casi sarebbe quello di distruggere
immediatamente le sessioni inutili, con qualche stratagemma, e di non voler
creare troppe variabili o oggetti direttamente all'inizio della sessione, ma
aspettare a crearle solo quando necessario (e così più facile capire se
l'utente ha attivato i cookies).
Se una pagina del sito applicazione non richiede l'uso di sessioni, inserire
<%@ ENABLESESSIONSSTATE = True|False %>
all'inizio della stessa, in modo da non far iniziare automaticamente una
sessione,
se necessario per quella pagina, e per evitare la "serializzazione" delle
richieste,
ovvero "IIS, per ogni sessione" processa una pagina alla volta per sessione
(effetto evidente nelle pagine con frames).
Session_OnEnd
==============
Evento generato automaticamente dopo x minuti di inattività del client,
oppure espressamente, in base al metodo Session.Abandon. Quando questo
evento viene generato automaticamente, è inutile mandare qualche dato al
client, in quanto potrebbe essere disconnesso da un bel po' di tempo. Si usa
fondamentalmente per distruggere oggetti allocati dall'evento
Session_OnStart, ma si
per tener traccia degli accessi, o altre info relative ai singoli utenti.
Application_OnEnd
===============
Evento generato quando l'Applicazione, se aperta deve essere chiusa, cioè
quando l'Applicazione è attiva (è stato eseguito Application_OnStart) ed il
server web riceve l'ordine di arrestare l'applicazione, ad esempio quando
deve essere stoppato, magari riavviato oppure spengere e riavviare il PC. Se
il computer va in tilt o viene spento selvaggiamente, l'evento NON può
essere generato. Questa routine serve tipicamente per distruggere
esplicitamente tutti gli oggetti creati nell'oggetto Applicazione.
Sicuramente non possiamo fidarci di quest'oggetto per salvare dei dati
importanti per il sito.
Ciao
Paolo DB