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.
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)
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".
si vous utilisez des composants Telerik, débarrassez-vous du module RadCompression.
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 leViewState
est envoyé au serveur.
Crédit Russell Clarvoe!--4-->
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">
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.)