2012-04-04 15 views
0

In einer Webanwendung, die die System.Net.GetHostByAddress-Methode verwendet, haben wir Probleme mit der Methode, die den falschen Hostnamen zurückgibt.Warum schlägt GetHostByAddress nur für Windows 7-Clients fehl?

Das Problem ist, dass bei einer IP-Adresse immer nur für Windows 7-Clients ein falscher Hostname zurückgegeben wird. Systeme, auf denen Windows XP ausgeführt wird, geben normalerweise ihren Hostnamen zurück.

Der Code, den wir verwenden, sieht wie folgt aus:

host = System.Net.Dns.GetHostByAddress(GetIPv4Address) 
strComputerName = host.HostName 

GetIPv4Address die Adresse ist die Web-App zugreifen. Allerdings haben wir auch versucht, direkt harte Kodierung IP-Adressen mit dem gleichen Ergebnis:

host = System.Net.Dns.GetHostByAddress("192.168.1.1") 
strComputerName = host.HostName 

Die endgültigen Falten sind, dass für jede gegebene IP-Adresse GetHostByAddress gibt den gleichen (falschen) Host-Namen die meiste Zeit. Ab und zu wird jedoch eine SocketException ausgelöst: Ein solcher Host ist nicht bekannt.

Updates:

  • wir GetHostByAddress von GetHostEntry auf dem API documentation auf Anraten Kommentare geschaltet.

  • GetHostEntry gibt auch falsche Ergebnisse zurück.

  • Weitere Untersuchungen haben ergeben, dass nslookup ähnliche Ergebnisse liefert wie GetHost *. Es kann also kein .NET-Problem sein. Wir wenden uns an unsere Netzwerkadministratoren, um zu sehen, ob sie das Problem lösen können.

Antwort

0

GetHostByAddress ist veraltet. Hier ist, wie ich es mache:

string ComputerName; 
try 
{ 
    ComputerName = System.Net.Dns.GetHostEntry(IPAddress).HostName; 
} 
catch (Exception e) 
{ 
    ComputerName = "Unknown"; 
} 

Dies funktioniert für Windows 7-Clients für mich. Ich habe GetHostByAddress nicht versucht, also Ymmv.

+0

Wir sind auf Empfehlung von Kommentatoren in [die API-Dokumentation] zu GetHostByAddress gewechselt (http://msdn.microsoft.com/en-us/library/ms143998 (v = vs.85) .aspx). GetHostEntry gibt auch ungerade Ergebnisse zurück. Weitere Untersuchungen haben jedoch ergeben, dass nslookup auch ungerade Ergebnisse liefert, also ist es wahrscheinlich kein .NET-Fehler ... – AaronSieb