我正在创建一个Web应用程序,我需要一种功能,如果有人客户端登录我的网站,则必须记录客户端的公共IP地址。我有一些javascript来做这个,但我的一些朋友不同意使用javascript库,因为他们不相信它。例如http://l2.io/ip.js?var=myip
as mentioned here
所以我们需要所有这些作为服务器端代码。所以我在这里找到了更多的代码 link但遗憾的是我没有得到预期的结果(它只返回本地主机IP)。任何人都可以帮我解决这个问题。
我试过了下面的代码
string VisitorsIPAddr = string.Empty;
if (HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"] != null)
{
VisitorsIPAddr = HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"].ToString();
}
else if (HttpContext.Current.Request.UserHostAddress.Length != 0)
{
VisitorsIPAddr = HttpContext.Current.Request.UserHostAddress;
}
但这并没有为我提供公共IP。我需要部署它还是什么。
答案 0 :(得分:3)
HttpContext.Current.Request.UserHostAddress
这应该获取客户端的公共IP地址
修改强>
所以你在你自己的机器的IP地址后,因为世界其他地方看到它?
这只是真的很重要,如果您正在托管,请说一个客户端将在同一网络上的Intranet,这是您使用HttpContext.Current.Request.UserHostAddress
时唯一的地址。在这种情况下,您将需要使用查找api或其他东西。但是,您知道网络的外部IP!
如果要在互联网上托管,那么HttpContext.Current.Request.UserHostAddress
将正常工作,因为每个客户都将显示它的外部IP。
它显示127.0.0.1我猜测是因为您在本地计算机上进行了测试,这将是它的环回地址。
希望这有帮助