Domanda

Il caso OnSessionStart / Session_Start ancora solo il fuoco una volta (totale) in un ambiente server farm, o in quanto le richieste sono gestite da più server, potrebbe fuoco fino a una volta al server?

ASP.NET / IIS6 o 7

Si dovrebbe non si presume che il server utilizza Sticky Sessions.

È stato utile?

Soluzione

Con un'installazione predefinita di IIS la risposta è "no" - il Session_Start volontà a fuoco generale, più volte. Un client creerà una nuova sessione su ciascun server diverso colpisce. La stessa cosa vale se si utilizza l'opzione Web Garden in IIS.

Se non dipendere da Session e si dispone di un server farm si sono di solito la cosa migliore fuori disabilitare completamente lo stato della sessione. Ecco come si fa: http://support.microsoft.com/kb/306996

Se non dipendono sessione la soluzione migliore è probabilmente lo Stato Servizio server ASP.NET. Tutti i server della farm utilizzeranno un singolo server per lo stato di sessione, e che farà in modo che Session_Start spara solo una volta. Per un sacco di background e dettaglio sulla configurazione leggere questo (Cercare "Modalità Stato server" per ottenere istruzioni specifiche): http://aspdotnetdevs.blogspot.com/2008/12 /aspnet-session-state-and-modes.html

Altri suggerimenti

Oltre a Tommaso:. Dipende dalle vostre impostazioni di sessione Stato

nel web.config, <sessionState mode="" >

Se si utilizza mode="InProc" si otterrà più eventi di sessione e SessionStart, 1 per server visitato.

Nelle altre modalità (StateServer o SqlServer) si otterrà 1 sessione e 1 SessionStart. Potrai non ottenere un evento SessionEnd a tutti.

In una fattoria, si sarebbe utilizzando SQL Server o un server di stato per gestire lo stato della sessione in tutti i server della farm. Si tratta di avere questo singolo server alla ricerca dopo il vostro stato di assicura che OnSessionStart dovrebbe essere chiamato solo una volta per sessione e non v'è alcuna necessità di avere sempre tutte le richieste risalgono allo stesso server.

Lo svantaggio principale di utilizzare un unico server per mantenere lo stato della sessione è che non hai più un evento OnSessionBegin.

la mia comprensione è che una volta che una richiesta di raggiungere un server della farm, tutte le prossime richieste del cliente stesso possa essere reindirizzata allo stesso server della farm.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top