Originariamente inviato da djciko
Perchè la session, anche se settata con un :

codice:
Session.Timeout = 120
ad ogni 2-3 round-trip ... si cancella ?
Forse hai fatto una domanda imbarazzante visto che nessuno risponde. Io non lo so, però prendo la Bibbia (Il libro di Dino Esposito), apro a pagina 673 e trovo la fatidica domanda:

PERCHE' LO STATO DELLA SESSIONE TALVOLTA VIENE PERSO?

Come tutti gli informatici che si rispettano, comincia con qualche parola strana in inglese, tipo InProc, AppDomain, recycling, processo worker, ... Leggendo con attenzione e prendendone il succo, si legge comunque che:
NON PUO' ESSERE FATTA ALCUNA CONSIDERAZIONE GENERICA A RIGUARDO DELL'INTERVALLO DEL CICLO (cioè il ciclo cher riavvia periodicamente il processo Worker di ASP.NET, e che è la causa della perdita di sessione)

Riporta una patetica giustificazione della Microsoft che se la prende con alcuni antivirus cattivi...

Detto questo, per ovviare, si propone di rilevare le sessioni scadute, con un giochetto di cookie

Non so, ma non credo che questa sia una soluzione. A parte il fatto che io avrei fatto una cosa più stupida, cioè avrei verificato che una particolare variabili fosse uguale a null, una soluzione forse accettabile sarebbe quella delle sessioni persistenti, per esempio per una settimana.

Per quanto mi riguarda, a causa di ciò, evito come la peste, le variabili di sessione: un poveraccio di <hidden per esempio, può fare il suo nobile lavoro mantenendo lo stato che interessa, e non viene certo perso a causa di antivirus cattivi, comunisti, o processi Worker