0

除了使用 HttpWebRequest 命令之外,是否可以确定网站是在线还是离线?

请不要建议我使用Ping 方法,因为我想检查网站的可用性。

4

3 回答 3

1

您应该向您的标头(域)发送一个 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 方法会给你一个想法。

于 2012-07-27T09:37:24.773 回答
0

除了使用 HttpWebRequest 命令之外,是否可以确定网站是在线还是离线?

不,没有别的办法。您需要向站点发送 HTTP 请求并检查返回的状态码。在 .NET 中,这通常通过WebClient类完成,但WebRequest如果您愿意,也可以使用。为了避免浪费带宽,您可以使用HEAD动词。这样,您就可以指示 Web 服务器不发送响应正文,而只是发送一个状态码,您可以检查它是否为 200。

于 2012-07-27T09:29:18.070 回答
0

一个选项是加载图像,以及带有被触发事件的 javascript img

onabort     Loading of an image is interrupted 
onerror     An error occurs when loading an image
onload  An image is finished loading

更多信息 http://www.w3schools.com/jsref/dom_obj_image.asp

于 2012-07-27T09:29:23.187 回答