如何在不完全重新启动应用程序的情况下恢复 HttpClient
并使其看到网络再次可用?
如果 Xamarin.Forms 应用程序在没有可用网络连接的情况下启动,然后启用了网络连接,HttpClient.SendAsync(request)
会抛出 NameResolutionFailure
并且它不会恢复,无论请求重复多少次。
看来,出现网络连接时,HttpClient 不知道如何恢复。
要在 Android 模拟器中重现该问题:
NameResolutionFailure
如果我使用 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/