【问题标题】:Client Disconnected客户端断开连接
【发布时间】:2010-11-01 23:32:25
【问题描述】:

我经常收到客户端断开连接的消息。我不使用负载平衡 - 只有一个 IIS 服务器。我需要知道是什么原因造成的以及如何解决它。

这里是异常信息:

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)

【问题讨论】:

  • FWIW,好像已经有类似的问题了:stackoverflow.com/questions/809413/…
  • @ChrisW.Rea 是的,但是这个指定了一个 IIS 服务器,另一个特别提到了负载平衡。我正在寻找的答案是关于这个问题而不是另一个。

标签: iis disconnected-session


【解决方案1】:

当您的页面允许最终用户在不等待响应的情况下进行多次部分回发时,也会发生这种情况。意思是,假设一个表格,点击一行会执行部分回发,并向他显示该行的详细信息。现在,如果用户没有等待详细信息,点击另一行...有可能发生此异常。

当发出新的异步请求时,ASP.NET AJAX 会放弃已经执行的请求。

然而,仍然不明白的是,为什么 IIS 允许这种被放弃的请求完全到达 ASP.NET..

【讨论】:

    【解决方案2】:

    我们也得到了这个异常,并且我们以完全可重复的方式得到它。当ViewState 变“大”并且用户在前一个请求完成之前单击按钮时会引发此异常...

    在我们的例子中,这很容易发生,因为回发使用的是 ajax,所以当ViewState 被发送到服务器时浏览器不会停止响应。单击此控件会一遍又一遍地导致异常。

    【讨论】:

    • 这解释了为什么会发生。那么如果客户要求像你说的那样,如何解决这类问题。或者我们可以忽略这个?
    • 有几种方法可以减少 ViewState 的影响。一种方法是创建您自己的视图状态提供程序并停止通过网络发送它。另一种方法是禁用它并在没有它的情况下使页面功能正常。最激进的方法,也是我们一直在走的路径,是将您的页面移植到 MVC。
    【解决方案3】:

    用户可能会通过在浏览器中单击停止或重新加载来中止页面回发。您的应用程序是否有一些非常重的页面,例如很多视图状态,您是否有连接速度较慢的用户,例如拨号?

    【讨论】:

    • 这不是正在发生的事情。所有本地连接都是 100MB/1GB,这发生在许多不同的页面上。我们确实使用了大量的视图状态,并且没有有效的方法来解决这个问题。问题似乎几乎是随机发生的。
    • 您真正需要阻止此错误发生的用例是什么?
    猜你喜欢
    • 2017-07-17
    • 2021-12-05
    • 2012-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多