Qu'est-ce qui pourrait causer le "le client déconnecté" ASP.NET une exception?

mon application .net 3.5 lance sporadiquement le système d'exception suivant.Exception Web:

le client s'est déconnecté

Pourquoi cette exception se produit? Mon application est en cours d'exécution sur une charge équilibrée Windows Server 2003 IIS 6.0 server.

30
demandé sur Cœur 2009-05-01 02:25:19

6 réponses

Le vbdork.net domain semble être maintenant disparu. En cherchant sur cette erreur, j'ai trouvé plusieurs références à cet article. J'ai donc trouvé une version de google en cache et je l'affiche maintenant ici à titre de référence. L'URL d'origine est: http://vbdork.net/post/2009/02/10/The-client-disconnected.aspx

vous recevez le message que le client a déconnecté.

Vous êtes susceptible d'obtenir sporadiquement ce message d'erreur si vous êtes dans une ferme web et vous avoir une page où l'utilisateur peut faire des sélections multiples, il se produit typiquement dans ce scénario:

L'utilisateur sélectionne une zone de liste déroulante qui a un événement sur la publication, mais l'utilisateur n'a à ce nouveau avant que la demande est envoyée à l'utilisateur, l'utilisateur est en train de créer un deuxième événement qui est déclenché sur l'autre serveur, le précédent serveur tente de retourner les résultats de la vieille événement à l'utilisateur, mais l'utilisateur n'est plus là, car l'utilisateur est maintenant sur l'autre serveur web.

l'utilisateur ne verra jamais d'erreur, mais si vous attrapez les erreurs et les envoyez/enregistrez, vous les verrez comme montré ci-dessous et serez totalement frustré. Ne vous en faites pas, ignorez-le.CE n'est même pas un problème, tant que vous piégerez ce genre d'erreur, rien ne se passera mal.

Type : System.Web.HttpException, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
Message : The client disconnected.
Source : System.Web
Help link :
ErrorCode : -2147467259
Data : System.Collections.ListDictionaryInternal
TargetSite : Void ThrowError(System.Exception, System.String, System.String, Boolean)
Stack Trace :    at System.Web.UI.ViewStateException.ThrowError(Exception inner, String persistedState, String errorPageMessage, Boolean macValidationError)
           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)
           at System.Web.UI.Page.ProcessRequest(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
           at System.Web.UI.Page.ProcessRequest()
           at System.Web.UI.Page.ProcessRequestWithNoAssert(HttpContext context)
           at System.Web.UI.Page.ProcessRequest(HttpContext context)
           at ASP.src_rptprefs_chainhierarchy_aspx.ProcessRequest(HttpContext context)
           at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
           at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)

        Inner Exception
        ---------------
        Type : System.Web.UI.ViewStateException, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
        Message : Invalid viewstate.

Client IP: 10.21.4.8
Port: 46784
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; InfoPath.1; .NET CLR 1.1.4322; MS-RTC LM 8)
31
répondu Paul Prewett 2015-10-29 15:51:53

peut-être parce que le "client s'est déconnecté"...

navigateur fermé, navigant vers une nouvelle page, fatigué d'attendre que l'application se charge...

En toute sincérité, découvrez cette page pour beaucoup plus d'informations sur ce problème.

en résumé, cela se produit parce que le navigateur initie une nouvelle requête qui rebondit sur le second serveur alors que le premier serveur traite la requête originale. Son conseil est simplement d'ignorer il.

mon conseil serait de comprendre pourquoi votre équilibreur de charge ne maintient pas le client sur le même serveur pour les requêtes ultérieures; aussi appelé sessions "Sticky".

7
répondu NotMe 2009-04-30 22:31:12

si vous utilisez des composants Telerik, débarrassez-vous du module RadCompression.

4
répondu Vladimir Kocjancic 2013-10-11 11:23:45

vérifiez aussi cette réponse sur une question similaire. Il n'y a pas de web farm dans ce cas.

cette exception est lancée quand le ViewState est devenu "grand" et que l'utilisateur clique sur un bouton avant qu'une demande précédente est terminée. [...] Cela se produit très facilement parce que le post back utilise ajax, de sorte que le navigateur n'arrête pas de répondre alors que le ViewState est envoyé au serveur.

Crédit Russell Clarvoe!--4-->

2
répondu Michael 2017-05-23 12:34:24

tentative de correction en modifiant le viewstate en plusieurs champs à l'aide de maxPageStateFieldLength dans le web.config:

<pages enableSessionState="true" enableViewState="true" enableViewStateMac="true" validateRequest="false" maxPageStateFieldLength="20">
0
répondu ben 2012-10-11 00:55:45

autres causes probables: Vous utilisez des contrôles qui ne supportent pas Ajax en réalité. Ajax est supposé être capable de traiter les requêtes async, mais certains contrôles ne fonctionnent pas, comme le treeview telerik (ajax). (En attendant que la police d'internet de telerik Vienne censurer cette mauvaise publicité, comme d'habitude.)

0
répondu NNM 2013-05-15 10:11:52