Edit: En fait, je dis un mensonge - par défaut 404 devrait provoquer une exception Web de toute façon, et je viens de confirmer cela au cas où j'étais misremembering. Alors que le code donné dans l'exemple est perméable, il devrait toujours fonctionner. Puzzling, mais je vais laisser cette réponse ici pour la meilleure sécurité avec l'objet de réponse.
Le problème avec le code que vous avez, est que pendant qu'il vérifie bien l'URI précis donné, il considère 404, 500, 200, etc. comme également « succès ». Il est également un peu inutile d'utiliser GET pour faire un travail HEAD suffit. Il devrait vraiment nettoyer cette WebResponse aussi. Et le terme path
est un nom de paramètre stupide pour quelque chose qui n'est pas seulement un chemin, pendant que nous y sommes.
private bool WebsiteUp(string uri)
{
try
{
WebRequest request = WebRequest.Create(uri);
request.Timeout = 3000;
request.Method = "HEAD";
using(WebResponse response = request.GetResponse())
{
HttpWebResponse hRes = response as HttpWebResponse;
if(hRes == null)
throw new ArgumentException("Not an HTTP or HTTPS request"); // you may want to have this specifically handle e.g. FTP, but I'm just throwing an exception for now.
return hRes.StatusCode/100 == 2;
}
}
catch (WebException)
{
return false;
}
}
Bien sûr, il y a des sites pauvres là-bas qui renvoient un 200 tout le temps et ainsi de suite, mais c'est le meilleur peut faire. Il suppose que dans le cas d'une redirection, vous vous souciez de la cible ultime de la redirection (finissez-vous sur une page réussie ou une page d'erreur), mais si vous vous souciez de l'URI spécifique, vous pouvez désactiver la redirection automatique, et considérons les codes 3xx réussis aussi.
c'est assez cool. Je reçois une erreur que je ne peux pas appliquer "/" au code des opérations et int – Crash893
si je le cast comme (int) cela fonctionne – Crash893
Oups, oui. Il devrait avoir un cast à int (l'alternative est de tester contre tout type de succès possible, mais le lancer vers int devrait être plus à l'épreuve du temps et preuve d'un comportement fou, non-standard mais conforme à l'esprit-de-norme). –