【发布时间】:2021-08-19 20:29:24
【问题描述】:
我正在使用 Selenium 尝试使用下面的代码测试是否存在损坏的链接。我将创建一个 Http 请求并检查响应的状态代码。但是我发现虽然驱动程序可以导航到网站上的任何页面,但代码在request.GetResponse()
private const string BASE_URL = "https://something.example.com"
using(IWebDriver driver = new ChromeDriver())
{
brokenLinks = new List<string>();
//navigate to home page
driver.Navigate().GoToUrl(BASE_URL);
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(BASE_URL);
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
response.Close();
}
返回的错误只是Error: Unable to read data from the transport connection: An existing connection was forcibly closed by the remote host,它没有让我知道问题可能是什么。
我尝试将基本 URL 更改为指向另一个站点(例如新闻站点)并且响应似乎工作正常 - 这让我相信这可能是某种服务器上的问题 - 任何指针一切将不胜感激
【问题讨论】:
-
“强制关闭”表示 TCP 连接未完成。它通常意味着以下 1) 服务器在客户端之前启动 2) 客户端和服务器使用不同的端口号 3) 客户端正在尝试连接到环回地址 127.0.0.1 (或配置为环回的本地主机)。 4)服务器和客户端都使用相同的IP地址。服务器应该监听 IP Address.any。客户端应连接到机器 IP 地址(或名称)。 5)您尝试使用 IPV4 或 IPV6(或相反)。 IPAddress 是一个数组。索引 0 是 IPV6,索引 1 是 IPV4
-
最好使用
HttpClient而不是过时的HttpWebRequest。
标签: c# selenium-chromedriver httpwebrequest httpwebresponse