I dati della sessione si perdono quando si usa ASP.NET modalità stato sessione InProc

Questo articolo consente di risolvere il problema relativo alla perdita dei dati della sessione quando si usa ASP.NET modalità stato sessione InProc.

Versione originale del prodotto: ASP.NET
Numero KB originale: 324772

Sintomi

I dati della sessione per ASP.NET applicazioni Web sembrano andare persi a intervalli casuali per la modalità stato sessione InProc.

Causa

I dati sullo stato della sessione vengono persi se la AppDomain classe o il processo Aspnet_wp.exe (o il processo di W3wp.exe, per le applicazioni eseguite in IIS 7.0 o versione successiva) viene riciclato. In genere, viene AppDomain riavviato in base a diversi fattori:

  • Vari attributi (ad esempio, l'attributo memoryLimit ) hanno impostazioni specifiche nella <processModel> sezione del file di configurazione.
  • Il file Global.asax o Web.config è stato modificato.
  • La Bin directory dell'applicazione Web è stata modificata.
  • Il software di scansione dei virus ha toccato alcuni file.config .

La modalità sessione InProc indica che lo stato della sessione è archiviato in locale. Ciò significa che con la modalità stato sessione InProc viene archiviato come oggetti vita nell'oggetto AppDomain dell'applicazione Web. Questo è il motivo per cui lo stato della sessione viene perso quando Aspnet_wp.exe (o W3wp.exe, per le applicazioni eseguite in IIS) o il AppDomain riavvio.

Risoluzione

Per risolvere questo problema, è possibile usare la modalità stato sessione StateServer o SqlServer. ASP.NET fornisce questi altri approcci per l'archiviazione dei dati sullo stato della sessione. Nelle modalità StateServer e SqlServer lo stato della sessione non è archiviato nell'oggetto AppDomain dell'applicazione Web.

Nota

È importante comprendere il comportamento e i problemi associati a ogni modalità di stato della sessione quando si decide quale modalità è appropriata per i propri requisiti.

Stato

Si tratta di un comportamento legato alla progettazione del prodotto.

Riferimenti

Per altre informazioni sulla gestione dello stato della sessione ASP.NET e altre informazioni correlate, vedere Stato sessione.