2012-03-29 201 views
-2

爲了讓我寫的東西像下面的計算機名稱:獲取計算機名

Dim client As System.Net.IPHostEntry 
client = System.Net.Dns.GetHostByAddress(Request.ServerVariables.Item("REMOTE_HOST")) 
label1.text=client.hostname 

此代碼在服務器計算機上,但在客戶端機器的不工作。

有沒有其他的方法來找到計算機名稱。

+0

你會得到什麼錯誤? Request.ServerVariables.Item(「REMOTE_HOST」)返回什麼? – jgauffin 2012-03-29 14:41:13

回答

2

你需要看看來自客戶端的請求,例如:

label1.Text = HttpContext.Current.Request.UserHostName; 

見下文更多關於HttpRequest.UserHostName Property

+0

使用此代碼我可以看到機器的IP地址,但我需要計算機名稱。 – Abhishek 2012-03-29 10:45:58

+0

那麼做一個DNS查找?和你的問題一樣。 – Lloyd 2012-03-29 10:51:25

+0

如何做DNS查詢? – Abhishek 2012-03-29 10:53:37

0

的代碼,就像你是最好企圖獲取客戶端的DNS機器名稱:

Dim host As IPHostEntry 
'Get the server variable value 
host = Dns.GetHostEntry(HttpContext.Current.Request.ServerVariables.Item("REMOTE_HOST")) 

您在使用「REMOTE_HOST」服務器變量時所做的是索取主機名稱,請求。再次閱讀最後一部分,它提供了爲什麼它不總能產生正確結果的答案。

如果你對此有一個負載平衡器坐在它前面的webfarm您的網站,您將得到負載平衡器,而不是原來的客戶發出請求的價值。 「REMOTE_HOST」應該可能有詳細信息,說明是主機發出請求的最後一個。這就是爲什麼使用該服務器變量不可靠。

這也是一個安全風險,所以JavaScript不允許獲取這些信息,所以這也不是一個選項。純粹出於信息的緣故,一種舊式的暴力方式是通過使用ActiveX控件來實現的,但這也不是一個可行的選擇。關鍵是除非你在一個域上,並且可以通過IP進行反向查找,否則100%的時間可能無法獲得客戶的機器名稱。