Domanda

Ho bisogno di capire qualcosa di ASP.NET stato di sessione, in quanto si applica a IIS 7 e ASP.net 3.5.

Se un'applicazione è configurato per utilizzare in-process stato della sessione, sarà che il lavoro OK se ci sono più processi di lavoro? In altre parole, fare lavoratore elabora lo stato della sessione quota?

La configurazione di default per IIS 7 è quello di utilizzare in-process stato della sessione e di assegnare un massimo di 10 processi di lavoro. Sembrerebbe probabile, allora, che questa configurazione di default dovrebbe funzionare. Ho a che fare con una società che ha prodotto una web app ASP.NET MVC che sta avendo alcuni problemi, stanno accusando l'ambiente server. L'affermazione è che perché sto utilizzando le impostazioni di default di 10 processi di lavoro, che sta rompendo il loro stato di sessione. Ho bisogno di sapere se questa è in realtà una richiesta precisa. Non ho mai conosciuto un app ASP.NET per non funzionare con la configurazione di default, quindi sono un po 'confuso e la necessità di avere questa chiarito.

È stato utile?

Soluzione

Avere più processi di lavoro e l'utilizzo di InProc non sembra essere compatibile.

Vedere questo :

  

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. Se lo fai, la perdita di dati può verificarsi se diverse richieste di stessa sessione sono serviti da diversi processi di lavoro.

Altri suggerimenti

Più di un processo di lavoro è un "giardino web." In-processo lo stato della sessione non funziona correttamente. Avrete bisogno di utilizzare un unico processo di lavoro per il vostro web app, o utilizzare un server di stato di sessione, o SQL Server per lo stato della sessione.

Posso sbagliarmi, ma per quanto ne so, per impostazione predefinita hai solo 1 processo di lavoro per ogni dominio di applicazione con più thread di lavoro per gestire le richieste. In questo caso in-process stato sessione dovrebbe funzionare bene (le impostazioni di default).

Ma se si dispone di più processi di lavoro (non solo thread di lavoro, processi di lavoro effettivi) si ha bisogno di stato della sessione processo.

Credo che avendo processo di più di 1 lavoratore in ASP.NET è denominato Modalità giardino web , che è necessario attivare in modo specifico e se lo fai, allora avete bisogno di gestione dello stato del processo. Vedere il commento scatola href="http://msdn.microsoft.com/en-us/library/ms178586.aspx" rel="noreferrer"> sotto la In-Process intestazione modalità .

ho sperimentato sessione perso problema e, infine, faticato a trovare la causa principale.

Recentemente ho ricevuto diversi bug reprot sulla sessione persa. Se il carico sito è basso, tutto è OK. Se il carico sito è alto, la questione della sessione persa accade. Questo è molto strano.

La causa principale è tra impostazione processo di lavoro e lo stato della sessione. Qui abbiamo 5 processi di lavoro, il che significa che avrà 5 processi indipendenti in esecuzione quando il carico sito è alta. Mentre la sessione è memorizzato in processo, IIS non può garantire che un utente client utilizzerà lo stesso processo di lavoro. Ad esempio, il client utente utilizza Processo A quando la prima visita sul web, e quando la seconda visita il web, si può utilizzare Process B. Non v'è alcuna sessione memorizzata in Process B, così la sua sessione è perduto.

Perché è OK quando il carico sito è bassa? Perché IIS sarà solo l'installazione un processo di lavoro quando il carico è basso. Quindi il problema della sessione persa non accadrà. Questo spiega il motivo per cui è OK quando schiero una nuova versione e provarlo OK di notte, ma l'errore si verifica di nuovo domani mattina. Perché il carico sito è basso durante la notte.

Fare attenzione a utilizzare lo stato di sessione in Process, è instabile quando il carico sito sarà alto e considerando con mutiple processi di lavoro. Provare qualcosa di simile stato di Stato ServerSession.

scroll top