J'ai un problème dans lequel mes demandes Web .NET frappent toujours la même adresse IP pour un CName donné. Le CNAME est lié à plusieurs adresses IP et ces adresses IP sont renvoyées dans un ordre aléatoire chaque fois qu'une recherche DNS se produit (confirmée via l'exécution de Nslookup).
J'ai écrit une application simple pour tester ceci: P>
public void TestDNS() { while (true) { var ipAddress = Dns.GetHostAddresses("mywebsite.com").First().ToString(); Console.WriteLine(string.Format("Current: '{0}' at: '{1}'", ipAddress, DateTime.Now.ToLongTimeString())); Thread.Sleep(1000); } }
4 Réponses :
comme solution de contournement, ping rapport le même problème? P>
http://msdn.microsoft.com/ fr-US / bibliothèque / system.net.networkinformation.ping.aspx p>
Si vous acceptez des solutions de contournement, une autre solution possible rechercherait une bibliothèque / code 3ème partie qui résolvant l'hôteName ou invoquer la ligne de commande via [System.Diagnostics.Process ();]. P>
espère que c'est de l'aide. p>
Merci. La solution que j'ai faite en ce moment invoque Wslookup via une commande de processus .NET et met à jour le fichier d'hosts. C'est un hack, mais c'est simple et ça marche. En fin de compte, je vais passer à la mise à niveau vers Server 2012, qui n'a pas ce problème.
Voici le code, il prend essentiellement une URL cible et assignera l'IP à autant de noms d'hôte dans le fichier d'hôtes que vous le souhaitez. Github.com/reustmd/hostfileUpdater/tree/Master/HostFileUpdat ER
Méthode gethostaddresses () renvoie un tableau de type iPaddress; voir ma réponse.
exécutez-vous le même environnement .NET sur toutes les machines, c'est-à-dire que votre code est compilé à la même cible (x86 ou x64) et même .NET Framework 2.0 ou 3.5 ou 4.0 P>
Oui. Je copie des exe et des DLL collé sur les différentes machines. Chaque système d'exploitation était 64 bits.
Je suppose que cela ne signifie pas que tous ont le même cadre Stackoverflow.com/Questtions/7084028/...
De toute façon, je pense que ceci est un bogue dans le cadre .NET de l'intégration-cadre, qui devrait être signalé à Microsoft, mais ils n'ont pas de portail de reporting de bogues :(
méthode Type: system.net.ipaddress [] p>
Un tableau de type iPaddress qui contient les adresses IP de l'hôte
qui est spécifié par le paramètre HostNameorAddress. P>
blockQuote> changez votre voir cette page pour plus de détails. p> p> gethostaddresses () code> renvoie un tableau de type
iPaddress code>.
var code> à un tableau iPaddress. Voici l'exemple: p>
Vous faites des requêtes récursives. Si vous ne voulez pas que le serveur DNS met en cache des requêtes récursives Créez une nouvelle DWORD "MAXCACHETTL" avec valeur 0x0 à P>
HKEY_LOCAL_MACHINE \ System \ CurrentControlset \ Services \ DNS \ Paramètres P>
Pouvez-vous avoir le serveur DNS renvoyer un ensemble d'adresses IP complètement différents pour chaque appel? Cela vous dira si les articles sont mis en cache ou si, pour une raison quelconque, le temps d'exécution trie simplement les valeurs renvoyées.
Bonne idée @jimmischel. J'ai essayé de modifier l'enregistrement DNS après que l'application .NET était en cours d'exécution et que rien n'a changé. Il ne semble pas récupérer des changements DNS (c'est-à-dire mis en cache pour toujours). La seule chose que j'ai trouvée à la mise à jour du fichier d'hôtes. Si je fais cela, il met à jour le DNS dans l'application .NET en cours d'exécution.
Méthode gethostaddresses () renvoie un tableau de type iPaddress. Voir ma réponse.
Je vois un problème similaire. Je sais que c'est une ancienne question, mais les serveurs ont-ils été hébergés dans le nuage (si oui, lequel)?
@Thecloudlesssky Ces serveurs étaient sur AWS. Je n'ai pas essayé de répliquer cette question avec mon propre matériel ou un autre fournisseur de cloud.
@ Manu08 Intéressant, les nôtres sont hébergés sur AWS. Merci!
@Thecloudlesssky bonne chance. Au cas où vous l'avez manqué ci-dessous, j'ai utilisé cette application pour contourcer le problème sur nos serveurs: Github.com/reustmd/ HostfileUpdater
@ Manu08 merci! Tout de suite, nous utilisons Pinvoke via Stackoverflow.com/a/16821805/200322 lorsqu'une exception se produit et semble i> pour corriger le problème
\ _ (ツ) _ / ¯ code>