我如何检查网站是否在线

时间:2016-01-02 23:24:39

标签: c# networking

因此,我知道可以使用c#中的Ping.Send(字符串)ping服务器,但是可以ping特定的Web应用程序,而不是整个服务器。例如,有一个托管在其上的三个网站(a,b和c)的服务器。服务器IP为1.1.1.1。每个网站都有不同的端口。我如何检查网站a目前是否正在托管?

2 个答案:

答案 0 :(得分:5)

只需向WebSite提出请求

private bool PingWebSite(string url)
{
    try
    {
        WebRequest.Create(url).GetResponse();
        return true;
    }
    catch
    {
        return false;
    }
}

然后使用它

var isWebSiteWorking = PingWebSite("http://stackoverflow.com");

答案 1 :(得分:2)

我不会做GetResponse()因为,如果特定的Url返回1 GB的文件,这会阻止你的应用程序。只是提出头部请求应该足够或使用TcpClient。

async Task<Boolean> IsAvailable()
{
    string url = "http://www.google.com";
    try
    {
        using (var client = new HttpClient())
        {
            HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Head, url);
            var response = await client.SendAsync(request);
            if (response.IsSuccessStatusCode)
            {
                response.Dump();
                return true;
            }
            else
            {
                return false;
            }
        }
    }
    catch (Exception ex)
    {
      return false;
    }
}
相关问题