【问题标题】:The underlying connection was closed: An unexpected error occurred on a receive. Download Html Code from Url底层连接已关闭:接收时发生意外错误。从 URL 下载 Html 代码
【发布时间】:2018-01-28 23:38:38
【问题描述】:

我使用此代码从 url 下载字符串 html:

HttpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create(currentUrl);
httpWebRequest.KeepAlive = true;
httpWebRequest.Timeout = 3600000;
httpWebRequest.UserAgent = "Mozilla / 5.0(Windows NT 6.1; WOW64; rv: 30.0) Gecko / 20100101 Firefox / 30.0";
HttpWebResponse httpWebResponse = httpWebResponse = (HttpWebResponse)httpWebRequest.GetResponse();
StreamReader streamReader = new StreamReader(httpWebResponse.GetResponseStream());
currenturlContent = streamReader.ReadToEnd();

我运行一个循环从一个网站的多个 url 获取 html。我认为问题在于网站安全。它可以在第一次读取 html 之后就报错了。

错误是:

底层连接已关闭:接收时发生意外错误。

【问题讨论】:

标签: c# httprequest


【解决方案1】:

这是我的循环 while (currentPage

                        HttpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create(currentUrl);
                        httpWebRequest.KeepAlive = true;
                        httpWebRequest.Timeout = 3600000;
                        httpWebRequest.UserAgent = "Mozilla / 5.0(Windows NT 6.1; WOW64; rv: 30.0) Gecko / 20100101 Firefox / 30.0";
                        HttpWebResponse httpWebResponse = httpWebResponse = (HttpWebResponse)httpWebRequest.GetResponse();
                        StreamReader streamReader = new StreamReader(httpWebResponse.GetResponseStream());
                        currenturlContent = streamReader.ReadToEnd();
                    }


                }

【讨论】:

    【解决方案2】:

    你应该在使用后尝试关闭streamReader:streamReader.Close();

    查看此链接:

    https://www.telerik.com/blogs/help!-running-fiddler-fixes-my-app-

    ...问题始终是开发人员调用了GetResponseStream() 方法,但随后未能在结果对象上调用Close()。结果是 .NET 使对象无限期地保持活动状态,这导致后续请求最终阻塞在默认的每主机连接数限制上

    【讨论】:

      猜你喜欢
      • 2011-01-25
      • 2014-03-10
      • 2020-06-24
      • 1970-01-01
      相关资源
      最近更新 更多