Comment vérifier si un site web est en ligne en C #?

Je souhaite que mon programme en C # vérifie si un site Web est en ligne avant son exécution. Comment puis-je lui demander d’envoyer une requête ping sur le site Web et rechercher une réponse en C #?

Vous avez utilisé System.Net.NetworkInformation.Ping voir ci-dessous.

 var ping = new System.Net.NetworkInformation.Ping(); var result = ping.Send("www.google.com"); if (result.Status != System.Net.NetworkInformation.IPStatus.Success) return; 

Un Ping vous indique seulement que le port est actif, il ne vous dit pas s’il s’agit vraiment d’un service Web.

Ma suggestion est d’effectuer une requête HTTP HEAD sur l’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 } 

Cela ne récupérera pas réellement la page HTML, mais vous aidera à trouver le minimum de ce que vous devez savoir. Désolé si le code ne comstack pas, c’est juste pour moi.

Petite remarque pour le code du digicodeur et exemple complet de la méthode Ping:

 private bool Ping(ssortingng 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; } } 
 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; } 

Le moyen le plus simple auquel je puisse penser est quelque chose comme:

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

DownloadData lève une exception si le site Web n’est pas en ligne.

Il existe probablement une méthode similaire pour effectuer un ping sur le site, mais il est peu probable que la différence soit perceptible à moins que vous ne vérifiiez plusieurs fois par seconde.