【发布时间】:2020-09-29 04:50:57
【问题描述】:
我确实意识到有不同的方法可以检查 C# 和其他语言的网站是否存在。但是,我开始明白其中一些效果并不好。例如这段代码:
WebClient client = new WebClient();
try
{
string response = client.DownloadString(url);
return true; // Successful -> the website does exist.
}
catch
{
return false; // Unsuccessful -> the website doesn't exist.
}
没有检测到www.bb.com,尽管这个网站显然确实存在。为了绝对安全,我应该使用什么代码?
【问题讨论】:
-
"URL 存在与否?" 将它们写为文本时存在。但是,如果您想检查远程资源是否存在,则必须对其进行刺激。您可以 ping 域,但它可能无法令人满意,或者您可以发送一个 head 请求,这可能大部分时间都有效。
-
说实话
URL exists定义太模糊了。例如想象一下,在公司网络上,您可能拥有使用私有 DNS 的 Intranet 资源,因此甚至无法公开解析。同时,公司网络可能会阻止公共互联网访问,从而阻止您访问它。最后,正如@MichaelRandall 所指出的,资源实际上可能暂时不可用,或者您可能有 ISP 或其他网络问题(例如 SSL/TLS 密码协商、时间偏差等)。试图从客户端机器上声明网站可用性是徒劳的。