C# HttpClient.SendAsync jeter “Une erreur s'est produite lors de l'envoi de la demande” d'exception lors de l'essai de certaines Url

Je développe une application console C# pour tester si une URL est valide ou de travaux. Il fonctionne bien pour la plupart des Url et peut obtenir de réponse avec le Code d'État HTTP de site web cible. Mais lors de l'essai de quelques autres Url, l'application de jeter un "Une erreur s'est produite lors de l'envoi de la demande" d'exception lors de l'exécution de HttpClient.SendAsync méthode. Donc je ne peux pas obtenir aucune réponse, ni de Code d'État HTTP, même cette URL fonctionne réellement dans le navigateur. Je suis désespérée de trouver comment gérer ce cas. Si l'URL ne fonctionne pas, ou que le serveur de rejeter ma demande, il devrait au moins me donner correspondant code d'État HTTP.

Voici le code simplifié de mon test de l'application:

using System;
using System.Net.Http;
using System.Threading.Tasks;

namespace TestUrl
{
    class Program
    {
        static void Main(string[] args)
        {
           //var urlTester = new UrlTester("http://www.sitename.com/wordpress"); //works well and get 404
           //var urlTester = new UrlTester("http://www.fc.edu/"); //Throw exception and the URL doesn't work
           var urlTester = new UrlTester("http://www.ntu.edu.tw/english/"); //Throw exception and the URL works actually

            Console.WriteLine("Test is started");

            Task.WhenAll(urlTester.RunTestAsync());

            Console.WriteLine("Test is stoped");
            Console.ReadKey();
        }


        public class UrlTester
        {
            private HttpClient _httpClient;
            private string _url;

            public UrlTester(string url)
            {
                _httpClient = new HttpClient();
                _url = url;
            }

            public async Task RunTestAsync()
            {
                var httpRequestMsg = new HttpRequestMessage(HttpMethod.Head, _url);

                try
                {
                    using (var response = await _httpClient.SendAsync(httpRequestMsg, HttpCompletionOption.ResponseHeadersRead))
                    {
                        Console.WriteLine("Response: {0}", response.StatusCode);
                    }
                }
                catch (Exception e) 
                { 
                }
            }
        }

    }
} 

OriginalL'auteur codigube | 2015-10-04