2010-01-27 12 views
21

Ho bisogno di capire qualcosa sullo stato della sessione ASP.NET, poiché si applica a IIS 7 e ASP.net 3.5.Stato sessione ASP.NET e più processi di lavoro

Se un'applicazione è configurata per utilizzare lo stato di sessione in-process, funzionerà correttamente se sono presenti più processi di lavoro? In altre parole, i processi di lavoro condividono lo stato della sessione?

La configurazione predefinita per IIS 7 è l'utilizzo dello stato di sessione in-process e l'assegnazione di un massimo di 10 processi di lavoro. Sembrerebbe quindi probabile che questa configurazione di default dovrebbe funzionare. Ho a che fare con un'azienda che ha prodotto un'applicazione web ASP.NET MVC che sta avendo dei problemi, stanno incolpando l'ambiente del server. L'affermazione è che, poiché sto utilizzando le impostazioni predefinite di 10 processi di lavoro, ciò sta interrompendo il loro stato di sessione. Devo sapere se questo è in realtà un reclamo accurato. Non ho mai conosciuto un'applicazione ASP.NET per non funzionare con la configurazione predefinita, quindi sono un po 'confuso e ho bisogno di chiarirlo.

+1

Quali sono i problemi che l'applicazione sta riscontrando? A prima vista sembra più un problema di riciclo dei processi di lavoro. –

+0

La sessione inproc non è condivisa tra i processi di lavoro. Basta impostare il loro pool di applicazioni su usando solo 1 e i problemi andranno via. – NotMe

risposta

21

Avere più processi di lavoro e usare InProc non sembra essere compatibile.

Vedi this:

Se si abilita la modalità Web-giardino impostando l'attributo webGarden su true nell'elemento processModel del file web.config dell'applicazione, non utilizzare la modalità stato sessione InProc. In tal caso, la perdita di dati può verificarsi se diverse richieste per la stessa sessione vengono offerte da diversi processi di lavoro.

+0

questo non funziona. –

5

Potrei sbagliarmi, ma per quanto ne so, per impostazione predefinita hai solo 1 processo di lavoro per dominio dell'applicazione con più thread di lavoro per gestire le richieste. In questo caso, lo stato della sessione in-process dovrebbe funzionare correttamente (le impostazioni predefinite).

Tuttavia, se si dispone di più processi di lavoro (non solo thread di lavoro, processi di lavoro effettivi), è necessario uscire dallo stato della sessione di elaborazione.

Penso che avere più di 1 processo di lavoro in ASP.NET si riferisce a modalità giardino Web che devi abilitare in modo specifico e se lo fai, allora hai bisogno di gestione dello stato di processo. Vedere comment box on this page sotto la voce In-Process Mode.

8

Più di un processo di lavoro è un "web garden". Lo stato della sessione In-process non funzionerà correttamente. È necessario utilizzare un singolo processo di lavoro per l'app Web oppure utilizzare un server di stato sessione o SQL Server per lo stato sessione.