【问题标题】:How do I find the remote host name in asp.net?如何在 asp.net 中找到远程主机名?
【发布时间】:2008-11-11 18:09:20
【问题描述】:

我使用这样的代码来查找远程用户名:

banner_label.Text = "Welcome, <B>" + User.Identity.Name + "</B>!"

我还想查找远程主机名。 我的生产环境将是一个带有活动目录的公司 Intranet。

【问题讨论】:

  • 只是一个警告:标签控件会自动将您的
  • 换句话说:您将看到 标记而不是粗体文本。
  • 嗯,不...标签不会自动进行 HTML 转义。我刚刚测试过。

标签: asp.net vb.net


【解决方案1】:

您在 Intranet 上,因此 Request.UserHostName 应该适合您。如果您有一个复杂的网络,一些路由器可能不会让这些信息通过,但是...

这是我在以前的工作中在应用程序中所做的类似操作,用于记录 IP 和主机名:

// NAT'ed addresses are sometimes still shown in HTTP_X_FORWARDED_FOR
string userHost = Request.ServerVariables["HTTP_X_FORWARDED_FOR"];

if (String.IsNullOrEmpty(userHost) || String.Compare(userHost, "unknown", true) == 0)
    userHost = Request.UserHostAddress;

if (String.Compare(userHost, Request.UserHostName) != 0)
    userHost += " (" + Request.UserHostName + ")";

然后,我在每次登录尝试时将此字符串记录在数据库中。


编辑:略过您上面的回复...认为此代码符合您的要求,让我去测试一下。


不知道为什么上面的代码在我以前的工作中有效。它不可靠,这就是为什么我在它周围加上 if 语句,但我认为它返回的主机名是半可靠的......网上的帖子说它与匿名访问有关。

无论如何,这可以满足您的需求,并且应该可以可靠地工作,因为您在 Intranet 上:

System.Net.Dns.GetHostEntry(userHost).HostName

【讨论】:

    【解决方案2】:

    我相信您可以使用HttpContext.Current.Request.ServerVariables["REMOTE_HOST"],但请注意该信息非常不可靠。发送给您的任何内容都可能被欺骗。

    另外,我认为这不会在互联网上起作用。

    【讨论】:

      【解决方案3】:

      也许这对你有用

      Request.UserHostName
      

      编辑:

      我认为你正在尝试做的事情不会在互联网上工作,你想要得到的是计算机的名称,它不会与请求一起传输到服务器。

      【讨论】:

        【解决方案4】:

        我搜索了一下,发现了 Request.UserHostName,但在我的开发环境中这只返回了 127.0.0.1。

        我试过了

        System.Net.DNS.GetHostName
        

        这成功返回了我的主机名。但是,由于我仍在开发中,我的客户端和服务器在同一台机器上,我仍然需要测试以确保它实际上给了我远程主机名而不是服务器名。

        【讨论】:

        • 这只会在您的开发环境中返回 127.0.0.1,在生产环境中这将是客户端的 IP 地址。您可以进行反向 dns 查找,但这不会为您提供计算机名称,它会为您提供 ISP 分配给该 IP 的名称。
        • System.Net.DNS.GetHostName 可能只会返回服务器的主机名。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-04-28
        • 2020-12-23
        • 2016-10-30
        • 1970-01-01
        • 2010-10-05
        相关资源
        最近更新 更多