2012-04-04 22 views
0

在使用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的問題。我們正在聯繫我們的網絡管理員,看他們是否可以解決問題。

回答

0

GetHostByAddress已棄用。以下是我的做法:

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

這適用於Windows 7客戶端。我沒有試過GetHostByAddress,所以ymmv。

+0

根據[API文檔](http://msdn.microsoft.com/en-us/library/ms143998(v = vs.85).aspx)中評論者的建議,我們切換到了GetHostByAddress。 GetHostEntry也返回奇怪的結果。但是,進一步的調查顯示,nslookup也會返回奇怪的結果,所以它可能不是.NET錯誤。 – AaronSieb 2012-04-05 16:03:59

相關問題