获取用户的本地IP - 始终获得192.168.2.1

时间:2012-11-01 09:14:29

标签: ip httpcontext

我需要为我的ASP.NET应用程序获取用户的本地IP,并且我正在使用此方法:

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"];
}

但是,当我发布网站时,无论用户在何处开设网站,我都会获得 192.168.2.1

有谁知道如何解决这个问题?

2 个答案:

答案 0 :(得分:0)

某些网络设备使用X-forwarded-for header。您应该检查命中您的应用程序的请求是否有此标题。

答案 1 :(得分:0)

您可以从HTTP_X_FORWARDED_FORREMOTE_ADDR获取客户的IP地址。

var ipAddress = HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];

if (string.IsNullOrEmpty(ipAddress ))
{
    ipAddress = HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];
}

return ipAddress;