我使用此代码从url:
下载字符串htmlHttpWebRequest 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然后出错。
错误是:
基础连接已关闭:接收时发生意外错误。
答案 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使对象无限期地保持活动状态,这会导致后续请求最终阻塞默认的每主机连接限制