Condividi tramite


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

Questo articolo consente di risolvere il problema che i dati della sessione vengono persi quando si usa ASP.NET modalità di stato della 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 di Aspnet_wp.exe (o il processo di W3wp.exe, per le applicazioni eseguite in IIS 7.0 o versione successiva) vengono riciclate. In genere, il AppDomain viene 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 analisi dei virus ha toccato alcuni file con estensione config .

In Modalità sessione InProc indica che lo stato della sessione viene archiviato in locale. Ciò significa che con la modalità di stato della sessione InProc viene archiviato come oggetti di vita nell'applicazione AppDomain 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 i AppDomain riavvii.

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 viene archiviato nell'applicazione AppDomain Web.

Note

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

Stato

Questo comportamento è impostato a livello di progettazione.

Riferimenti

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