我正在用 C# 编写一个网络爬虫。在获取页面上所有链接的方法中,我想返回链接列表,但使用 LINQ 对其进行“过滤”,以便列表仅包含存在的 url。我有一个名为 RemoteFileExists 的辅助方法,它返回一个布尔值。在方法结束时,我编写了以下 LINQ 行:
//Links is a List<string> that hasn't been filtered
return (from link in Links
where RemoteFileExists(link)
select link).ToList<string>();
出于某种原因,当我这样做时,列表返回为空。
远程文件存在:
static bool RemoteFileExists(string url)
{
try
{
HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest;
request.Method = "HEAD";
HttpWebResponse response = request.GetResponse() as HttpWebResponse;
return (response.StatusCode == HttpStatusCode.OK);
}
catch
{
return false;
}