【问题标题】:How can I get a client's local IP address, like 192.168.0.1?如何获取客户端的本地 IP 地址,例如 192.168.0.1?
【发布时间】:2015-10-26 16:28:22
【问题描述】:

我已经尝试过 Stack Overflow 问题中的所有解决方案How to get a user's client IP address in ASP.NET?。它给了我服务器的 IP 地址,而不是客户端的 LAN IP 地址。

我需要获取客户端的本地IP地址,它必须被视为192.168.2.1,但我总是获取服务器的IP地址而不是它。

这是我的代码:

System.Web.HttpContext context = System.Web.HttpContext.Current;
string ipAddress = context.Request.ServerVariables["LOCAL_ADDR"];

有一个网站这样做,http://net.ipcalf.com/

我该如何解决这个问题?

【问题讨论】:

  • 不知道,但你可以看看他们的源代码来寻找答案,假设它不是服务器端的东西(我严重怀疑)
  • 他们使用的是RTCPeerConnection。您可以从字面上将该页面上的 HTML 和脚本复制到文本文档中,并在 Chrome 和 Firefox 中获得相同的结果。他们在客户端做这件事
  • 您无法在客户端以外的任何其他地方获取本地客户端地址。它没有在请求中发送。
  • 据我所知,唯一对我有用的是将 ActiveX 与 Internet Explorer 一起使用,但这使得网站非常受限制;)如果没问题,请检查:codingresource.blogspot.nl/2010/02/…跨度>

标签: c# asp.net


【解决方案1】:

你想要远程地址,而不是本地地址

context.Request.ServerVariables["REMOTE_ADDR"]

【讨论】:

    【解决方案2】:

    您的代码获取的是服务器 IP 地址,而不是客户端的。请尝试以下操作:

    此代码是从 Stack Overflow 问题中复制的How to get a user's client IP address in ASP.NET?

    protected string GetIPAddress()
    {
        System.Web.HttpContext context = System.Web.HttpContext.Current;
        string ipAddress = context.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
    
        if (!string.IsNullOrEmpty(ipAddress))
        {
            string[] addresses = ipAddress.Split(',');
            if (addresses.Length != 0)
            {
                return addresses[0];
            }
        }
    
        return context.Request.ServerVariables["REMOTE_ADDR"];
    }
    

    【讨论】:

    • 那你应该把这个问题标记为重复
    • 我已经标记了它,但同时我也提供了一个答案。
    • 这个话题不是重复的,因为你提到的问题是关于让用户 wan ip 地址像 86.123.127.8 但我要问的是你怎么能得到用户的本地 ip 地址像 192.168.2.1 我希望你在判断之前阅读更多关于这个问题的内容。
    猜你喜欢
    • 2012-03-14
    • 2012-02-16
    • 2015-12-20
    • 2016-03-29
    • 1970-01-01
    • 2019-01-14
    • 2019-11-13
    • 1970-01-01
    • 2014-06-05
    相关资源
    最近更新 更多