获取用户';s本地IP-始终获得192.168.2.1
我需要为我的ASP.NET应用程序获取用户的本地IP,我正在使用此方法:获取用户';s本地IP-始终获得192.168.2.1,ip,httpcontext,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.IsNullOrEmpt
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
有人知道如何解决这个问题吗?一些网络设备使用。您应该检查命中您的应用程序的请求是否有此头。您可以从
HTTP\u X\u FORWARDED\u获取客户端的IP地址,用于或远程地址
var ipAddress = HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
if (string.IsNullOrEmpty(ipAddress ))
{
ipAddress = HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];
}
return ipAddress;
192.168.2.1
那可能是路由器网关。你的服务器在路由器后面吗?我需要检查用户是否从一定范围的IP打开了网站,但我不能这样做,因为我总是得到192.168.2.1@Alvinwongt当前的答案有点证明了这里多次提出的观点-始终发布你的相关代码,不管它是否来自之前的SO答案。不要期望人们关注到任何地方的链接。=)采纳建议,post-edited@J.steenth服务器位于使用端口转发的路由器后面,因此连接总是连接到路由器并NAT到您的服务器,因此REMOTE\u ADDR
无法工作。我想这就是为什么HTTP\u X\u FORWARDED\u FOR
也不起作用的原因。海报上说,链接中的代码是遵循的,这意味着使用了X-FORWARDED-FOR。我尝试了完全相同的方法,但无论用户从何处打开网站,我总是得到192.168.2.1。。。。正如OP已经做的那样,如果他使用链接答案中的代码。