获取客户端的公共IP地址

时间:2014-10-14 05:42:23

标签: c# ip asp.net-mvc-5

我正在创建一个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。我需要部署它还是什么。

1 个答案:

答案 0 :(得分:3)

HttpContext.Current.Request.UserHostAddress

这应该获取客户端的公共IP地址

修改

所以你在你自己的机器的IP地址后,因为世界其他地方看到它? 这只是真的很重要,如果您正在托管,请说一个客户端将在同一网络上的Intranet,这是您使用HttpContext.Current.Request.UserHostAddress时唯一的地址。在这种情况下,您将需要使用查找api或其他东西。但是,您知道网络的外部IP!

如果要在互联网上托管,那么HttpContext.Current.Request.UserHostAddress将正常工作,因为每个客户都将显示它的外部IP。

它显示127.0.0.1我猜测是因为您在本地计算机上进行了测试,这将是它的环回地址。

希望这有帮助