在使用System.Net.GetHostByAddress方法的Web應用程序中,我們遇到了返回錯誤主機名的方法問題。爲什麼GetHostByAddress僅對Windows 7客戶端失敗?
的問題是,給定一個IP地址,它始終返回一個不正確的主機名,僅用於Windows 7客戶端。運行Windows XP的系統通常會返回其主機名。
我們使用的代碼如下所示:
host = System.Net.Dns.GetHostByAddress(GetIPv4Address)
strComputerName = host.HostName
GetIPv4Address是訪問Web應用程序的地址。但是,我們也試過直接硬,結果相同編碼的IP地址:
host = System.Net.Dns.GetHostByAddress("192.168.1.1")
strComputerName = host.HostName
最後的皺紋是,對於任何給定的IP地址GetHostByAddress返回相同(不正確)的主機名的大部分時間。但是,每隔一段時間它將拋出一個SocketException:沒有這樣的主機是已知的。
更新:
我們切換到GetHostByAddress從GetHostEntry上對API documentation意見建議。
GetHostEntry也會返回不正確的結果。
進一步調查發現,nslookup返回的結果與我們從GetHost *獲得的結果相似。所以它可能不是.NET的問題。我們正在聯繫我們的網絡管理員,看他們是否可以解決問題。
根據[API文檔](http://msdn.microsoft.com/en-us/library/ms143998(v = vs.85).aspx)中評論者的建議,我們切換到了GetHostByAddress。 GetHostEntry也返回奇怪的結果。但是,進一步的調查顯示,nslookup也會返回奇怪的結果,所以它可能不是.NET錯誤。 – AaronSieb 2012-04-05 16:03:59