除了使用 HttpWebRequest 命令之外,是否可以确定网站是在线还是离线?
请不要建议我使用Ping 方法,因为我想检查网站的可用性。
除了使用 HttpWebRequest 命令之外,是否可以确定网站是在线还是离线?
请不要建议我使用Ping 方法,因为我想检查网站的可用性。
您应该向您的标头(域)发送一个 ajax 调用。在 ? 后添加随机数 (即使您的页面被缓存,这是为了测试)。这就是它在javascript中的样子:
function hasInternets() {
console.log("hasInternets: " + window.location.href.split("?")[0] + "?" + Math.random());
var s = $.ajax({
type: "HEAD",
url: window.location.href.split("?")[0] + "?" + Math.random(),
async: false
}).status;
console.log("s: " +s);
//thx http://www.louisremi.com/2011/04/22/navigator-online-alternative-serverreachable/
return s >= 200 && s < 300 || s === 304; }
如果你正在寻找这方面的 C# 代码,至少这个 javascript 方法会给你一个想法。
除了使用 HttpWebRequest 命令之外,是否可以确定网站是在线还是离线?
不,没有别的办法。您需要向站点发送 HTTP 请求并检查返回的状态码。在 .NET 中,这通常通过WebClient
类完成,但WebRequest
如果您愿意,也可以使用。为了避免浪费带宽,您可以使用HEAD
动词。这样,您就可以指示 Web 服务器不发送响应正文,而只是发送一个状态码,您可以检查它是否为 200。
一个选项是加载图像,以及带有被触发事件的 javascript img
onabort Loading of an image is interrupted
onerror An error occurs when loading an image
onload An image is finished loading