底层连接已关闭:接收时发生意外错误。从Url下载Html代码

时间:2018-01-28 23:38:38

标签: c# httprequest

我使用此代码从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();

我运行循环从一个网站的许多网址获取HTML。我认为问题是网站安全。它可以在第一次读取html然后出错。

错误是:

  

基础连接已关闭:接收时发生意外错误。

2 个答案:

答案 0 :(得分:0)

这是我的循环   while(currentPage< = toPage)                     {                         尝试                         {                             lbCurrentPage.Text = currentPage.ToString();                             currentUrl = createUrlUser(keyword,currentPage);                             ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls;

                        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();
                    }


                }

答案 1 :(得分:0)

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

请看这个链接:

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

  

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