首页 > 解决方案 > 当我下载太快时,C# Webclient().OpenRead 是连接返回 404 错误

问题描述

我正在制作一个小应用程序,它将显示我所在地区的当前雷达图像。这些图像在此 Web 文件夹中公开可用: https ://radar.weather.gov/ridge/RadarImg/N0R/MPX/

好的,没问题。我有一种方法可以读取文件夹并解析其中的链接,然后像这样一次下载一个:

WebClient wc = new WebClient();
Stream stream;
foreach (string file in folderList)
{
client.Headers.Add("Accept-Language", " en-US");
client.Headers.Add("User-Agent", "Mozilla/6.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)"); // Get something sane for the server, or it rejects the connection.
stream = client.OpenRead(file);
//Do something with the stream data
stream.Flush();
stream.Close();
}

它可以下载一个文件就好了。它可以下载多个文件,直到它到达大约第五个文件,然后它会抛出一个错误

远程服务器返回错误:(404) Not Found。

那,似乎是一个谎言。该文件实际上就在那里,如果我将文件链接复制粘贴到浏览器中,它会立即加载。
如果我添加一个 System.threading.thread.sleep(10000); 让它在每个文件之间暂停十秒钟,它永远不会出错。

那么我是在用我的网络客户端做一些非常愚蠢的事情,还是这就是radar.gov 强制执行节流的方式?

标签: c#.nethttp

解决方案


推荐阅读