如何恢复HttpClient
并让它看到网络在没有完全重启应用程序的情况下再次可用?
如果在没有网络连接的情况下启动Xamarin.Forms应用程序,然后启用了后续网络连接,则HttpClient.SendAsync(request)
会抛出NameResolutionFailure
并且无法恢复,无论请求多少次重复。
看来,当网络连接出现时,HttpClient不知道如何恢复。
要在Android模拟器中重现此问题:
NameResolutionFailure
如果我使用etc / hosts文件中指定的域名,则不会发生此问题。
我尝试完全重新创建HttpClient
并在问题发生时重新发送新请求,但这无济于事。只有完全重启应用程序才有帮助。
显然,我不能要求用户完全杀死我的应用并在每次用户打开网络连接 启动我的应用后再次启动它。
答案 0 :(得分:2)
这是一个已知问题。参见:
单声道:https://bugzilla.xamarin.com/show_bug.cgi?id=45761
iOS:https://bugzilla.xamarin.com/show_bug.cgi?id=45763
Android:https://bugzilla.xamarin.com/show_bug.cgi?id=45383
解决方法是手动设置DNS刷新:
System.Net.ServicePointManager.DnsRefreshTimeout = 0;