2017-03-21 2 views

Répondre

2

Je crois que si vous spécifiez votre hôte comme une adresse IP (comme vous l'avez fait), puis .net va sauter le dsn regarder vers le haut (quel que soit le maintenir en vie ou le paramètre d'en-tête d'hôte) .

Si vous creusez un peu dans HttpClient, vous verrez qu'il utilise essentiellement HttpWebRequest pour effectuer les requêtes. https://github.com/dotnet/corefx/blob/master/src/System.Net.Http/src/System/Net/Http/HttpClient.cs

HttpWebRequest utilise finalement une classe appelée ServicePoint qui appellent un Dns.TryInternalResolve. Dns.TryInternalResolve n'essaie pas de résoudre IPAddresses.

Pour plus d'informations reportez-vous à: https://referencesource.microsoft.com/#System/net/System/Net/DNS.cs,f8023b9c19212708

J'ai aussi essayé de vérifier que en exécutant les lignes et suivre les demandes suivantes à l'aide netmon

using (HttpClient c = new HttpClient()) 
{ 
    var response = c.GetAsync(url).Result; 
} 

j'ai vu en effet pour une URL qui contient un nom d'hôte .net émet une requête DNS alors que pour les requêtes avec une adresse IP comme nom d'hôte, il n'y a pas de requête DNS.