2010-04-26 7 views
7

.NET J'utilise le code suivant pendant des mois (sans problème) dans un environnement 2.0/.NET 3.5:problème avec System.Net.Dns.GetHostEntry (DNSSERVER) sur 4.0

string server="192.168.1.3"; 
IPHostEntry ipe = System.Net.Dns.GetHostEntry(server); 
IPAddress ipa = ipe.AddressList[0]; 
IPEndPoint ipep = new IPEndPoint(ipa, (int)UdpServices.Domain); 

Ici, le serveur est codé en dur à une adresse IP, mais dans mon application, il pourrait potentiellement être quelque chose comme "server.test.com".

Lors de la conversion de mon projet vers .NET 4.0, ce code a cessé de fonctionner lorsqu'il transmettait directement une adresse IP (fonctionne toujours avec un nom d'hôte). Il se bloque à cette exception:

System.Net.Sockets.SocketException was unhandled 
    Message=The requested name is valid, but no data of the requested type was found 
    Source=System 
    ErrorCode=11004 
    NativeErrorCode=11004 
    StackTrace: 
     at System.Net.Dns.InternalGetHostByAddress(IPAddress address, Boolean includeIPv6) 
     at System.Net.Dns.GetHostEntry(String hostNameOrAddress) 

Parce que tout ce que je besoin est le résultat IPEndPoint, je peux travailler autour de la question en utilisant IPAddress.Parse pour générer l'objet IPAddress, mais je veux savoir si quelqu'un d'entre vous savez pourquoi ce comportement a changé dans .NET 4.0? (Si nous ne pouvons pas résoudre le nom d'hôte à partir de l'adresse IP, une exception est maintenant levée).

Répondre

5

Microsoft a répondu à cette here:

cela a été volontairement changé à plus représentent toujours la résolution de noms échecs. Si vous avez des chaînes d'entrée que vous voulez juste convertir en IPAddresses, il est recommandé que vous utilisez IPAddress.TryParse ou Dns.GetHostAddresses

+0

le lien est rompu –

+0

Ce lien fonctionne: [https://connect.microsoft.com/VisualStudio/feedback/details/561083/dns-gethostentry-prend-differently-in-net-4-0-than-previous-versions](https://connect.microsoft.com/VisualStudio/ feedback/détails/561083/dns-gethostentry-se comporte-différemment-dans-net-4-0-que-versions-précédentes) – empty

+0

Ce lien ne fonctionne pas maintenant non plus. – bgmCoder