Проверьте, действительно ли URI существует .NET - PullRequest
0 голосов
/ 25 января 2019

Я хочу программно проверить, существует ли 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;
        }
    }
...