2010-04-26 8 views
7

Ich habe seit Monaten des folgenden Code unter Verwendung von (ohne Problem) in einer Umgebung mit .NET 2.0/3.5:Problem System.Net.Dns.GetHostEntry (dnsserver) auf .NET 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); 

Hier Der Server ist fest an eine IP-Adresse gebunden, aber in meiner Anwendung könnte es möglicherweise etwas wie "server.test.com" sein.

Wenn ich mein Projekt in .NET 4.0 umwandelte, funktionierte dieser Code nicht mehr, wenn eine IP-Adresse direkt übergeben wurde (funktioniert immer noch mit einem Hostnamen). Er stürzt mit dieser Ausnahme:

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) 

Weil alles was ich brauche die resultierende IPEndPoint ist, dass ich das Problem umgehen kann IPAddress.Parse unter Verwendung der IP-Adresse Objekt zu erzeugen, aber ich möchte wissen, ob jemand von euch wissen, warum Dieses Verhalten hat sich in .NET 4.0 geändert? (Wenn wir den Hostnamen nicht von der IP-Adresse auflösen können, wird jetzt eine Ausnahme ausgelöst).

Antwort

5

Microsoft beantwortet diese here:

dies absichtlich zu mehr geändert wurde konsequent Namensauflösung Ausfälle darstellen. Wenn Sie Eingabezeichenfolgen haben , die Sie gerade zu IPAdressen konvertieren möchten, wird empfohlen, dass verwenden Sie IPAddress.TryParse oder Dns.GetHostAddresses

+0

der Link –

+0

gebrochen Dieser Link funktioniert: [https://connect.microsoft.com/VisualStudio/feedback/details/561083/dns-gethostentry-behaves-differently-in-net-4-0-than-previous-versions](https://connect.microsoft.com/VisualStudio/ feedback/details/561083/dns-gethostentry-verhält sich-anders-im-netz-4-0-als-vorherige-versions) – empty

+0

Dieser Link funktioniert jetzt auch nicht. – bgmCoder