【问题标题】:Get computer name获取计算机名称
【发布时间】:2012-03-29 10:29:11
【问题描述】:

为了获得计算机名称,我写了如下内容:

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

此代码在服务器机器上工作,但在客户端机器上它不工作。

有没有其他方法可以找到计算机名称。

【问题讨论】:

  • 你得到什么错误? Request.ServerVariables.Item("REMOTE_HOST") 返回什么?

标签: asp.net vb.net


【解决方案1】:

你需要查看来自客户端的请求,例如:

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

查看更多关于HttpRequest.UserHostName Property

【讨论】:

  • 使用这个代码我可以看到机器的IP地址,但我需要计算机名。
  • 那么进行 DNS 查询吗?与您的问题相同。
  • 谢谢,但我没有使用 C#。我正在使用视觉基础语言。
  • 无需大喊。它在 C# 或 VB.NET 中仍然是相同的主体,并且您已经在您发布的代码 sn-p 中找到了答案,这意味着您可能只是从某个地方复制它而没有真正了解它的作用,这对您没有任何好处。
【解决方案2】:

下面的代码就像你的一样是最好的尝试获取客户端 DNS 机器名称:

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

您使用“REMOTE_HOST”服务器变量所做的是询问主机的名称​​发出请求。再次阅读最后一部分,它提供了为什么它不会总是产生正确结果的答案。

如果您的网站位于前面有负载平衡器的网络场上,您将获得 负载平衡器 的价值,而不是 原始 的价值提出请求的客户。 “REMOTE_HOST”可能应该有详细说明它是发出请求的最后一个主机。这就是使用该服务器变量不可靠的原因。

这也是一个安全风险,因此 JavaScript 也不允许获取此信息,所以这也不是一个选项。纯粹为了提供信息,一种老式的蛮力方法是使用 ActiveX 控件,但这也不是一个可行的选择。关键是,除非您在域中并且可以通过 IP 进行反向查找,否则您可能没有一致且可靠的方法来 100% 地获取 原始 客户端的机器名称。

【讨论】:

    猜你喜欢
    • 2012-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-02
    • 2011-05-03
    • 2018-03-21
    相关资源
    最近更新 更多