wake-up-neo.com

Was kann die ASP.NET-Ausnahme "Der Client ist nicht verbunden" verursachen?

Meine .NET 3.5-Anwendung löst sporadisch die folgende Ausnahme System.Web-Ausnahme aus:

Der Client hat die Verbindung getrennt

Warum tritt diese Ausnahme auf? Meine Anwendung wird auf einem Windows Server 2003 IIS 6.0-Server mit Lastenausgleich ausgeführt.

30

Die vbdork.net-Domain scheint nun defekt zu sein. Bei der Suche nach diesem Fehler habe ich mehrere Verweise auf diesen Artikel gefunden. Also habe ich eine zwischengespeicherte Google-Version gefunden und poste sie hier als Referenz. Die ursprüngliche URL lautete: http://vbdork.net/post/2009/02/10/The-client-disconnected.aspx

Sie erhalten die Nachricht The client Disconnected.

Diese Fehlermeldung wird möglicherweise sporadisch angezeigt, wenn Sie sich in einer Webfarm befinden und über eine Seite verfügen, auf der der Benutzer mehrere Optionen auswählen kann. Dies geschieht normalerweise in diesem Szenario: 

Der Benutzer wählt ein Dropdown-Listenfeld mit einem Ereignis für das Postback aus. Der Benutzer führt dies jedoch erneut aus, bevor die Anforderung an den Benutzer zurückgesendet wird. Der Benutzer erstellt jetzt ein zweites Ereignis, das auf dem anderen Webserver (dem vorherigen) ausgelöst wird Der Webserver versucht, die Ergebnisse des alten Ereignisses an den Benutzer zurückzugeben, der Benutzer ist jedoch nicht mehr da, da sich der Benutzer jetzt auf dem anderen Webserver befindet. 

Dem Benutzer wird nie ein Fehler angezeigt. Wenn Sie jedoch die Fehler erkennen und per E-Mail versenden/protokollieren, werden sie wie unten gezeigt angezeigt und sind völlig frustriert. Machen Sie sich keine Sorgen, ignorieren Sie es einfach, es ist nicht einmal ein Problem, solange Sie diesen Fehler einfangen, wird nichts schief gehen. 

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
Paul Prewett

Vielleicht weil der "Client nicht verbunden" ist ...

Geschlossener Browser, Navigieren zu einer neuen Seite, müde vom Warten auf das Laden der App ...

Im Ernstfall, checke this page für eine Menge Informationen zu diesem Problem.

Zusammenfassend geschieht dies, weil der Browser eine neue Anfrage initiiert, die auf den zweiten Server zurückspringt, während der erste Server die ursprüngliche Anfrage verarbeitet. Sein Rat ist, es einfach zu ignorieren.

Mein Rat wäre, herauszufinden, warum Ihr Load Balancer den Client bei nachfolgenden Anfragen nicht auf demselben Server installiert hat. auch als "sticky" -Sitzungen bezeichnet.

7
NotMe

Wenn Sie Telerik-Komponenten verwenden, entfernen Sie das RadCompression-Modul.

4

Überprüfen Sie auch diese Antwort auf eine ähnliche Frage. In diesem Fall gibt es keine Webfarm.

Diese Ausnahme wird ausgelöst, wenn die Variable ViewState zu "large" geworden ist und der Benutzer auf eine Schaltfläche klickt, bevor eine vorherige Anforderung abgeschlossen ist. [...] Dies geschieht sehr leicht, da der Beitrag ajax verwendet, sodass der Browser nicht aufhört zu reagieren, während die Variable ViewState an den Server gesendet wird.

Gutschrift an Russell Clarvoe

2
Michael

versuchen Sie, das Problem zu beheben, indem Sie den Viewstate mithilfe von maxPageStateFieldLength in der web.config in mehrere Felder unterteilen:

<pages enableSessionState="true" enableViewState="true" enableViewStateMac="true" validateRequest="false" maxPageStateFieldLength="20">
0
ben

Andere wahrscheinliche Ursachen: Sie verwenden Steuerelemente, die Ajax in der Realität nicht unterstützen. Ajax sollte in der Lage sein, asynchrone Anfragen zu bearbeiten, aber einige Steuerelemente funktionieren nicht, z. B. der Telerik (Ajax) Baumansicht. (Erwartet, dass die Internet-Polizei von telerik wie üblich diese schlechte Werbung zensiert.)

0
NNM