What might be causing the "The client disconnected" ASP.NET exception?

My .NET 3.5 application sporadically throws the following exception System.Web exception:

The client disconnected

Why is this exception occurring? My application is running on a load balanced Windows Server 2003 IIS 6.0 server.


The vbdork.net domain seems to now be defunct. In searching on this error, I found several references to this article. So I found a google cached version of it and am now posting it here for reference. The original URL was: http://vbdork.net/post/2009/02/10/The-client-disconnected.aspx

You get the message The client Disconnected.

You're likely to sporadically get this error message if you're in a web farm and you have a page where the user can make multiple selections, it typically happens in this scenario:

The user selects a drop down list box that has an event on postback, but the user does this again before the request is sent back to the user, the user is now creating a second event that is being fired on the other webserver, the previous webserver tries to return the results of the old event to the user but the user is no longer there because the user is now on the other webserver.

The user will never see an error, but if you're catching the errors and emailing/logging them you'll see them like shown below and be totally frustrated. Don't worry about it, just ignore it it's not even an problem, as long as you're trapping this kind of error nothing will go wrong.

Type : System.Web.HttpException, System.Web, Version=, 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=, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
        Message : Invalid viewstate.

Client IP:
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)

Perhaps because the "client disconnected"...

Closed browser, navigating to a new page, tired of waiting for the app to load...

In all seriousness, check out this page for a lot of information on that problem.

In summary it's happening because the browser is initiating a new request that bounces to the second server while the first server is processing the original request. His advice is to simply ignore it.

My advice would be to figure out why your load balancer isn't keeping the client tacked to the same server on subsequent requests; also called "Sticky" sessions.

If you are using Telerik components, get rid of RadCompression module.

Also check out this answer on a similar question. There is no web farm in that case.

This exception is thrown when the ViewState has become "large" and the user clicks a button before a previous request has completed. [...] This happens very easily because the post back is using ajax, so the browser doesn't stop responding while the ViewState is being sent to the server.

Credit to Russell Clarvoe

attempt to fix by chunking the viewstate into multiple fields using maxPageStateFieldLength in the web.config:

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

Other likely causes: You're using controls that do not support Ajax in reality. Ajax is supposed to be able to handle async requests, but some controls don't work, such as the telerik (ajax) treeview. (Awaiting the telerik internet police to come censor this bad publicity, as usual.)

Need Your Help

Angular JS -: Scope Lost after formating through directive

angularjs angularjs-directive

I am facing an Issue when I am trying to format a json date to normal date by using a directive.