是啥导致连接中止?
Posted
技术标签:
【中文标题】是啥导致连接中止?【英文标题】:What causes connection abort?是什么导致连接中止? 【发布时间】:2018-11-23 21:39:01 【问题描述】:在 iPhone 上,有时当我打开应用程序时,所有即时 HttpClient 请求都会失败。我看到一条消息说...
软件导致连接中止
重试就没有问题了。
这是什么原因造成的?
首次在 iPhone 和 android 上打开应用程序以及通过单击通知打开应用程序时会发生这种情况。在这两种情况下,都会立即发送 Web 请求。
是否有可能连接还没有准备好,而不是等待,而是抛出异常?
【问题讨论】:
没有任何代码这是不可能的 你认为这可能是我的代码的结果? @IanWarburton 没有任何代码和有关应用程序状态的更多信息,很难说,但我可以假设如果应用程序正在运行并放入后台然后带回来,当应用程序被放置到后台时,你会因为不取消请求而重试超时(在应用程序中看到了一百万次)......但这只是一个疯狂的摆动......再次,更多需要应用信息.... @SushiHangover 当应用程序后台运行时您应该取消请求? @IanWarburton 当应用程序进入后台状态时,执行会暂停,并且有生命周期事件向您传达这种情况,然后您有 X 量的时间来执行代码清理。因此,如果需要在应用程序恢复时重试,则应取消并缓存诸如飞行中的 HttpClient 请求之类的事情,即作为“经验法则”,任何基于任务的都应通过您提供给该任务的取消令牌来取消(这取决于操作系统和应用程序的注册方式,即 Android 前台服务、ios VoIP 应用程序等...) 【参考方案1】:今天遇到了类似的问题!
我在启动 httprequest 之前添加了一个await Task.Delay(200);
(仅当应用程序从通知点击启动时)并且问题已修复。
【讨论】:
我使用github.com/App-vNext/Polly 添加了请求重试。它并不总是出错,所以总是拖延似乎很可惜。以上是关于是啥导致连接中止?的主要内容,如果未能解决你的问题,请参考以下文章
Android蓝牙:软件导致连接中止IOException? [复制]
JnrpeClient:java.net.SocketException:软件导致连接中止:recv 失败
java.net.SocketException:软件导致连接中止:recv 失败,出现 java.net.SocketException:连接重置 [重复]