Я хочу программно проверить, существует ли URL-адрес. URL-адреса, которые я проверяю, являются вызовами к серверу WebAPI, поэтому они имеют разные методы HTTP. Сначала я проверяю, правильно ли сформирован Uri, а затем вызываю созданный мной метод. Позвольте мне сначала сказать вам, что я совершенно не люблю этот метод, но, похоже, он делает свою работу. Я пропускаю что-то важное здесь, что я должен проверить, или есть более чистый способ вместо этой логики исключения. Я только хочу знать, существует ли URL, не больше, не меньше. Так что большую часть времени я получаю метод 405 Not Allowed, и это нормально.
public static bool UriExists(string url)
{
try
{
var request = WebRequest.Create(url);
request.Timeout = 5000;
request.Method = "HEAD";
using (var response = request.GetResponse())
{
return true;
}
}
catch (WebException ex)
{
return ((HttpWebResponse)ex.Response).StatusCode != HttpStatusCode.NotFound &&
((HttpWebResponse)ex.Response).StatusCode != HttpStatusCode.RequestTimeout &&
((HttpWebResponse)ex.Response).StatusCode != HttpStatusCode.GatewayTimeout;
}
}