gpt4 book ai didi

exception - 如何在网络连接恢复后恢复 HttpClient?

转载 作者:行者123 更新时间:2023-12-02 01:19:10 25 4
gpt4 key购买 nike

如何在不完全重启应用程序的情况下恢复 HttpClient 并使其再次看到网络可用?

如果在没有可用网络连接的情况下启动 Xamarin.Forms 应用程序,然后启用网络连接,HttpClient.SendAsync(request) 将抛出 NameResolutionFailure 并且它不会恢复,无论请求重复多少次。

看来,HttpClient 并不知道出现网络连接时如何恢复。

要在 Android 模拟器中重现该问题:

  • 确保您的应用已完全关闭
  • 关闭网络(在模拟器设置中将数据状态设置为漫游,或使用状态栏切换数据或 LTE 开关)。
  • 启动您的应用,运行网络请求以验证它是否正常工作(显然,您需要尝试/捕获网络请求以避免崩溃)
  • 在应用程序仍处于打开状态时,启用网络
  • 运行网络请求 - 将得到 NameResolutionFailure
  • 只有完全重启应用程序才能恢复 HttpClient

如果我使用 etc/hosts 文件中指定的域名,则不会发生此问题。

我尝试完全重新创建 HttpClient 并在出现问题时重新发送新请求,但这无济于事。只有完全重启应用程序才有帮助。显然,每次用户在启动我的应用程序后打开他的网络连接时,我不能要求用户完全终止我的应用程序并重新启动它。

最佳答案

这是一个已知问题。见:

单声道:https://bugzilla.xamarin.com/show_bug.cgi?id=45761

iOS:https://bugzilla.xamarin.com/show_bug.cgi?id=45763

安卓:https://bugzilla.xamarin.com/show_bug.cgi?id=45383

解决方法是手动设置 DNS 刷新:

System.Net.ServicePointManager.DnsRefreshTimeout = 0;

关于exception - 如何在网络连接恢复后恢复 HttpClient?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41122421/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com