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.
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