【问题标题】:Getting IPv4 address of server, not machine获取服务器的 IPv4 地址,而不是机器
【发布时间】:2014-05-12 02:47:34
【问题描述】:

我编写了以下代码来获取我机器的 IPv4 地址。当我们在服务器上部署这段代码时,这段代码给了我服务器的 IP 地址,而不是运行应用程序的机器 IP?

public string getIpAddress()
{
    try
    {
        string myHost = System.Net.Dns.GetHostName();
        string myIP = null;

        for (int i = 0; i <= System.Net.Dns.GetHostEntry(myHost).AddressList.Length - 1; i++)
        {
            if (System.Net.Dns.GetHostEntry(myHost).AddressList[i].IsIPv6LinkLocal == false)
            {
                myIP = System.Net.Dns.GetHostEntry(myHost).AddressList[i].ToString();
            }
        }
        return myIP;            
    }
    catch (Exception)
    {            
        throw;
    }
}

【问题讨论】:

  • 到底有什么问题?
  • 嗨 Joker_vD,问题是,当我在服务器上部署此代码并通过任何机器访问应用程序时,我得到服务器的 IPv4 地址而不是本地机器 IP

标签: c# asp.net ip-address


【解决方案1】:

这是预期的行为,因为此代码在服务器端运行。

但是,如果您想获取客户端 IP 地址,您仍然可以使用 Request 对象来完成。 (有关更多详细信息,请参阅此post 或查看谷歌示例)

【讨论】:

  • 嗨,我已经检查过 Request.UserHostAddress;但每次它给我这个 127.0.0.1。
  • UserHostAddress 将捕获代理服务器或路由器的 IP。请参阅 SO 帖子。
  • @user3437960 你在服务器上运行网络浏览器吗?
  • 没有 Joker_vD,我没有在服务器上运行 Web 浏览器,我在本地机器上运行浏览器
  • 你浏览器地址栏显示的url是什么?
猜你喜欢
  • 2021-12-22
  • 2023-03-09
  • 1970-01-01
  • 2015-09-02
  • 1970-01-01
  • 2013-03-27
  • 1970-01-01
  • 1970-01-01
  • 2012-09-11
相关资源
最近更新 更多