【发布时间】:2014-12-08 19:24:21
【问题描述】:
我正在创建一个 Web 应用程序,我需要一个功能,如果有人客户端登录到我的网站,则必须记录客户端的公共 IP 地址。我有一些 javascript 可以做到这一点,但我的一些朋友不同意使用 javascript 库,因为他们不信任它。如http://l2.io/ip.js?var=myipas 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。我需要部署它吗?
【问题讨论】:
-
什么代码返回本地主机IP?
-
@RadioSpace like
HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"]始终为空 -
“我没有得到预期的结果(它只返回本地主机 IP)” - 你需要解释它发生在什么情况下。否则,它是您链接到的问题的直接副本。
-
@Riki - 请注意,您关于缺少“x-forwarded-for”标头的评论并不能完全澄清您的问题。请求没有通过代理(或代理不关心设置标头)这一事实并不意味着太多......
-
@AlexeiLevenkov 我添加了一些我尝试过的代码,但代码只给了我 127.0.0.1。我还将网站托管到 IIS。
标签: c# ip asp.net-mvc-5