我有一个登录的Web应用程序。现在我想要的是在登录时获得该最终用户的IP地址。我已经尝试过研究,但根据我的理解,它获取我的机器的IP而不是登录的人。此应用程序已部署在服务器上。如果我按照他们说的做,我将获得服务器的IP地址。但我想要登录的最终用户的IP地址。
这是我见过的样本。
private string GetIP()
{
string strHostName = "";
strHostName = System.Net.Dns.GetHostName();
IPHostEntry ipEntry = System.Net.Dns.GetHostEntry(strHostName);
string ipaddress =convert.tostring(ipEntry.AddressList[2]);
return ipaddress.tostring();
}
我不确定我是否理解这一点,但我认为这将获得本地IP地址,而不是登录的最终用户的IP地址。如果我错了,请纠正我。有任何想法吗?谢谢!
答案 0 :(得分:9)
使用 -
HttpContext.Current.Request.UserHostAddress
答案 1 :(得分:2)
试试两个:
HttpContext.Current.Request.UserHostAddress;
或
HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];
答案 2 :(得分:1)
您可以使用Request.ServerVariables中的REMOTE_ADDR和HTTP_X_FORWARDED_FOR。
UserHostAddress属性只是REMOTE_ADDR服务器变量的包装器。因此,如果您的用户位于代理(或路由器)后面,则只返回一个IP地址,即代理(或路由器)的IP地址。
红色:http://haacked.com/archive/2006/10/11/A_Gotcha_Identifying_the_Users_IP_Address.aspx/
stackoverflow中还有另一个线程:How to Get IP Address?