-1

我需要为我的 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无论用户从哪里打开网站,我总是会得到。

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

4

2 回答 2

0

一些网络设备使用X-forwarded-for标头。您应该检查访问您的应用程序的请求是否具有此标头。

于 2012-11-01T09:20:57.407 回答
0

HTTP_X_FORWARDED_FOR您可以从或获取客户端的 IP 地址REMOTE_ADDR

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

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

return ipAddress;
于 2012-11-01T09:27:29.390 回答