我需要为我的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
。
有谁知道如何解决这个问题?
答案 0 :(得分:0)
某些网络设备使用X-forwarded-for
header。您应该检查命中您的应用程序的请求是否有此标题。
答案 1 :(得分:0)
您可以从HTTP_X_FORWARDED_FOR
或REMOTE_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;