2009-06-10 13 views
13

Spesso ricevo un messaggio Client disconnesso. Non utilizzo il bilanciamento del carico, solo un singolo server IIS. Ho bisogno di sapere che cosa sta causando questo e come risolverlo.Client disconnesso

Ecco le informazioni eccezione:

Type: System.Web.HttpException 
Message: The client disconnected. 

Exception Data: 

Source: System.Web 

TargetSite: Void ThrowError(System.Exception, System.String, System.String, Boolean) 

StackTrace: 
    at System.Web.UI.ViewStateException.ThrowError(Exception inner, String persistedState, String errorPageMessage, Boolean macValidationError) 
    at System.Web.UI.ObjectStateFormatter.Deserialize(String inputString) 
    at System.Web.UI.ObjectStateFormatter.System.Web.UI.IStateFormatter.Deserialize(String serializedState) 
    at System.Web.UI.Util.DeserializeWithAssert(IStateFormatter formatter, String serializedState) 
    at System.Web.UI.HiddenFieldPageStatePersister.Load() 
    at System.Web.UI.Page.LoadPageStateFromPersistenceMedium() 
    at System.Web.UI.Page.LoadAllState() 
    at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) 
+0

FWIW, sembra che ci sia una domanda simile già: http://stackoverflow.com/questions/809413/what-might-be-causare-thethe-client-disconnected-asp-net-exception –

+1

@ ChrisW.Rea Sì, ma questo specifica un singolo server IIS, in cui l'altro menziona specificamente il bilanciamento del carico. La risposta che stavo cercando è su questa domanda e non sull'altra. – Michael

risposta

1

E 'possibile che gli utenti stanno interrompere la pagina di post-back cliccando STOP o RELOAD nel browser. La tua applicazione ha alcune pagine piuttosto pesanti, ad es. un sacco di viewstate e hai utenti con connessioni più lente, ad es. dialup?

+0

Questo non è ciò che sta accadendo. Tutte le connessioni locali sono 100 MB/1 GB e ciò avviene su molte pagine diverse. Utilizziamo un sacco di viewstate e non esiste un modo efficace per farlo. Il problema sembra verificarsi in modo casuale. –

+0

Qual è il caso d'uso in cui è effettivamente necessario interrompere questo errore? –

8

OTTENIAMO anche questa eccezione e la otteniamo in modo completamente ripetibile. Questa eccezione viene generata quando lo ViewState diventa "grande" e l'utente fa clic su un pulsante prima che una richiesta precedente sia stata completata ...

Nel nostro caso questo accade molto facilmente perché il postback sta usando ajax, quindi il browser non lo fa smettere di rispondere mentre lo ViewState viene inviato al server. Fare clic su questo controllo provoca l'eccezione più e più volte.

+0

Questo spiega perché sta succedendo. Ecco come risolvere questo tipo di problemi se il requisito del cliente è come hai detto tu. O possiamo ignorarlo? – Ajay

+0

Ci sono un paio di modi per ridurre l'impatto di ViewState. Un modo è creare il proprio provider viewstate e smettere di inviarlo via cavo. Un altro è disattivarlo e fare il lavoro per far funzionare la pagina senza di essa. Il modo più drastico e il percorso verso il basso è quello di trasferire le tue pagine su MVC. –

2

Ciò accade anche quando la pagina consente all'utente finale di effettuare più postback parziali senza attendere la risposta. Significato, supponiamo una tabella in cui un clic su una riga fa un postback parziale e gli mostra i dettagli di quella riga. Ora, se l'utente esegue una riga e senza attendere i dettagli, fa clic su un'altra riga ... è probabile che si verifichi questa eccezione.

ASP.NET AJAX abbandona la richiesta già in esecuzione quando viene effettuata una nuova richiesta asincrona.

Tuttavia ciò che rimane è ununderstood Perché IIS consentono tale richiesta abbandonato per raggiungere ASP.NET a tutti ..

Problemi correlati