Подтвердить что ты не робот

Как вы проверяете, находится ли веб-сайт в С#?

Я хочу, чтобы моя программа на С# проверяла, находится ли сайт в сети до запуска, как я могу сделать свою программу ping на веб-сайте и проверить ответ на С#?

4b9b3361

Ответ 1

Вы используете System.Net.NetworkInformation.Ping, как показано ниже.

var ping = new System.Net.NetworkInformation.Ping();

var result = ping.Send("www.google.com");

if (result.Status != System.Net.NetworkInformation.IPStatus.Success)
    return;

Ответ 2

Ping сообщает только, что порт активен, он не говорит вам, действительно ли это веб-сервис.

Мое предложение - выполнить HTTP-запрос HEAD по URL-адресу

HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create("your url");
request.AllowAutoRedirect = false; // find out if this site is up and don't follow a redirector
request.Method = "HEAD";
try {
    response = request.GetResponse();
    // do something with response.Headers to find out information about the request
} catch (WebException wex)
{
    //set flag if there was a timeout or some other issues
}

На самом деле это не приведет к просмотру HTML-страницы, но это поможет вам узнать минимум того, что вам нужно знать. Извините, если код не компилируется, это просто с головы.

Ответ 3

Небольшое замечание для кода Digicoder и полный пример метода Ping:

private bool Ping(string url)
{
    try
    {
        HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(url);
        request.Timeout = 3000;
        request.AllowAutoRedirect = false; // find out if this site is up and don't follow a redirector
        request.Method = "HEAD";

        using (var response = request.GetResponse())
        {
            return true;
        }
    }
    catch
    {
        return false;
    }
}

Ответ 4

if (!NetworkInterface.GetIsNetworkAvailable())
{
    // Network does not available.
    return;
}

Uri uri = new Uri("http://stackoverflow.com/any-uri");

Ping ping = new Ping();
PingReply pingReply = ping.Send(uri.Host);
if (pingReply.Status != IPStatus.Success)
{
    // Website does not available.
    return;
}

Ответ 5

Самый простой способ, о котором я могу думать, это что-то вроде:

WebClient webClient = new WebClient();
byte[] result = webClient.DownloadData("http://site.com/x.html");

DownloadData выдаст исключение, если веб-сайт не подключен к сети.

Вероятно, существует аналогичный способ просто ping-сайта, но маловероятно, что разница будет заметна, если вы не будете проверять много раз в секунду.