【问题标题】:How can I get in c# the name of the computer, I need the name and not the IP如何在 c# 中获取计算机的名称,我需要名称而不是 IP
【发布时间】:2012-01-31 19:52:00
【问题描述】:

HttpContext.Current.Request.LogonUserIdentity.Name 用户名

txtUserIP.Text = HttpContext.Current.Request.UserHostAddress

给定IP

我需要:

  1. 计算机的名称
  2. 应用用户

需要开头:HttpContext

【问题讨论】:

  • 您需要客户端计算机的名称吗?
  • 你无法使用 HttpContext 获取它,它不是在请求中发送的
  • 您是尝试在 LAN 环境中还是通过 Internet 执行此操作?
  • 我需要客户端计算机的名称
  • @user177912 - 是的,我知道,但是客户端计算机与服务器在同一个网络中,还是您尝试通过 Internet 执行此操作?

标签: c# helper


【解决方案1】:

UserHostName 获取客户端的 DNS 名称,够吗?

编辑

Oskar 最初并且非常正确地在他的评论中链接了另一个问题,指出您不能假设已设置此变量,服务器从请求中的 UserAgent 标头获取数据,特别是这些数据被剥离了很多(匿名代理等)所以是的,它可能是可用的,不,你不能假设它是

【讨论】:

  • 可能是最接近的
  • 那我该怎么办?我需要从客户端通过字符串获取计算机的名称并将字符串传递给服务吗?
  • @user177912 问题是你不能。这是一种安全措施
  • 基本上就像奥斯卡所说的那样,如果您可以控制环境(即 LAN 没有防火墙),您将无法获取客户端未发送的数据,尽管一旦您处理互联网,它就应该存在几乎不行
【解决方案2】:

HttpContext.Current.Server.MachineName 包含服务器的名称。您无法获取客户端计算机的名称,因为它不是随请求一起发送的。

【讨论】:

    【解决方案3】:

    不能用 HttpContext 做到这一点。你能用这个吗?:

    var IpToHost = Dns.GetHostEntry(ipaddress);
    

    【讨论】:

    • 我知道我不能在服务器端这样做。我可以在客户端获取计算机的名称并通过层传递字符串吗?
    【解决方案4】:

    本地计算机的 DNS 主机名

    String hostName = Dns.GetHostName();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-02-18
      • 1970-01-01
      • 1970-01-01
      • 2011-06-14
      • 2012-03-14
      • 1970-01-01
      • 2010-12-18
      相关资源
      最近更新 更多