如何获取客户端的本地IP地址,如192.168.0.1?

时间:2015-10-26 16:28:22

标签: c# asp.net

我已经在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/

如何解决此问题?

2 个答案:

答案 0 :(得分:1)

您需要远程地址,而不是本地地址

context.Request.ServerVariables["REMOTE_ADDR"]

答案 1 :(得分:-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"];
}