从外部下载照片时 Web 客户端超时 link

Web Client timeout while downloading photos from external link

我正在尝试从外部下载 10 张照片 link 例如 http://images.net/images/20159178574IMG_0843.jpg

我正在读取驱动器上的一个文本文件并将其放在列表中,这里是代码

List < string > lines = new List < string > ();
using(StreamReader r = new StreamReader(fileName)) 
{
    string line;
    while ((line = r.ReadLine()) != null) 
    {
        lines.Add(line);
    }
}

foreach(string s in lines) 
{
    getthefile(s, System.DateTime.Now.Hour + System.DateTime.Now.Minute + System.DateTime.Now.Second + ".jpg");
}

private void getthefile(string filename, string filenamesave) 
{
    if (checkurl(filename)) 
    {

        string filepath = @
        "D:\files" + "\Photos\" + filenamesave;
        WebClient webClient = new WebClient();
        webClient.DownloadFile(filename, filepath);
    }
}

private bool checkurl(string url) 
{
    var request = (HttpWebRequest) WebRequest.Create(url);
    request.Method = "HEAD";
    var response = (HttpWebResponse) request.GetResponse();

    switch ((int) response.StatusCode) 
    {
        case 200:
            return true;
        default:
            return false;
    }
}

现在列表中的第一张照片已下载,但当循环移动到下一张照片时,它会卡住大约 2 分钟并抛出 超时异常 我尝试制作一个新列表以查看错误是否再次发生,但遗憾的是它抛出了同样的错误。

我的代码或托管 IIS 的服务器有问题吗?

谢谢

看起来你的问题出在 checkurl 方法中,它没有处理它获得的 WebResponse - 这意味着与该主机关联的连接池有效 "lost" 该连接,直到 WebResponse 完成。基本上,始终对 WebResponse 个对象使用 using 语句。

除此之外,尚不清楚为什么要为每个 URL 发出两个请求 - 也不清楚您的 checkurl 是否 实际上 会return false 当你遇到错误时,而不是抛出异常。我只是跳过 checkurl 测试,尝试下载文件,并处理 WebClient 抛出的任何异常。