2012-03-29 119 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%的时间可能无法获得客户的机器名称。