当Internet连接缓慢时:WebException-远程服务器返回错误:NotFound

本文关键字:服务器 返回 NotFound 错误 WebException- Internet 连接 缓慢 | 更新日期: 2023-09-27 18:20:50

我在我的应用程序中使用2个WebClients,用于2个不同天气的API。

当我的互联网连接很慢时,我会从API的一个获得一个异常。。它返回一个404 Notfound错误。

我已经通过禁用我的WiFi进行了测试,并将数据连接设置为"2G"。第一个API返回数据没有问题,但第二个API使用WebException使我的应用程序崩溃。

当我再次打开WiFi时,它可以完美地工作。第二个API似乎对缓慢的连接有点耐心。

有办法解决这个问题吗?我还尝试将WebClient更改为HttpWebRequest,但问题仍然存在。

谨致问候,Niels

编辑我的代码:

    private void GettingTheData()
    {
         WebClient Client = new WebClient();
         Client.DownloadStringCompleted += new DownloadStringCompletedEventHandler(Client _DownloadStringCompleted);
         Client.DownloadStringAsync(new Uri("http://theURI.com"));
    }
void Client_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e)
   {
    string result = e.Result.ToString();
    // Let's do the cool stuff overhere
}

当Internet连接缓慢时:WebException-远程服务器返回错误:NotFound

存在用于WP的HTTP客户端库,该库包含对超时的支持。关于它的文章。

Windows Phone 8:的一些示例代码

protected async override void OnNavigatedTo(NavigationEventArgs e)
{
     var httpClient = new HttpClient {Timeout = TimeSpan.FromSeconds(30)};
     var responseBodyAsText = await httpClient.GetStringAsync("www.contoso.com");
}

也许问题不在于网络延迟。也许您的第二个API要求调用方发送一个用户字符串,或者您不发送的其他HTTP头。它可以通过WiFi而不是2G工作,这可能与以下事实有关:从WiFi网络连接的任何设备似乎与托管API的服务器相同(从IP地址的角度来看),并且可能允许基于某些缓存的身份进行访问(可能您浏览了该服务以在开发PC上对其进行测试)。我很想看看如果你连接到另一个WiFi网络,如果响应相似,会发生什么。

我的即时建议是捕获WebException并给用户一个重试的机会。

我本想把这作为一个评论来补充,但我想我没有足够的声誉。

尝试增加ServicePointManager.DefaultConnectionLimit,尽管默认值为2。