关于ASP.NET获得访问者IP的问题。得到的IP地址不准确!

hcnak 2015-07-01 07:46:02
如题,我利用网上的方法,在ASP.NET里面获得网站访问者的IP
但是获得的IP与我在其它网站(比如腾讯IP分享计划,阿里IP,站长工具等查到的IP不同)
IP获得代码如下:

 protected string GetUserIp()                        //得到IP地址
{
string loginip = "";
//Request.ServerVariables[""]--获取服务变量集合
if (Request.ServerVariables["REMOTE_ADDR"] != null) //判断发出请求的远程主机的ip地址是否为空
{
//获取发出请求的远程主机的Ip地址
loginip = Request.ServerVariables["REMOTE_ADDR"].ToString();
}
//判断登记用户是否使用设置代理
else if (Request.ServerVariables["HTTP_VIA"] != null)
{
if (Request.ServerVariables["HTTP_X_FORWARDED_FOR"] != null)
{
//获取代理的服务器Ip地址
loginip = Request.ServerVariables["HTTP_X_FORWARDED_FOR"].ToString();
}
else
{
//获取客户端IP
loginip = Request.UserHostAddress.ToString();
}
}
else
{
//获取客户端IP
loginip = Request.UserHostAddress.ToString();
}
return loginip;
}


而实际运行结果却如下:
第一张为我网站上的,第二章,第三张,为我在其它网站得到的
请问问题在哪里?


...全文
499 17 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
hcnak 2015-07-02
  • 打赏
  • 举报
回复
引用 13 楼 Z65443344 的回复:
你在外网服务器,获取的是你的外网IP 而你自己的服务器在内网,获取的是你的内网IP 能一样才怪
腾讯(ip.qq.com) 阿里(http://ip.taobao.com/) 还有国外的一个GetMyIP(http://atomurl.net/myip/) 他们得到的访问者IP地址都是一样的(125.67.129.185 ,四川绵阳)。 为什么我按照网上(搜索了很多网站,试了很多代码)在我的网站(http://tool.akakanch.com/ip.aspx)得到的IP始终是(199.27.128.73,美国)?(PS,我网站在GoDaddy的服务器上) 请问:腾讯,阿里,GetMyIP,这些网站是怎么得到正确IP的?
hcnak 2015-07-02
  • 打赏
  • 举报
回复
引用 14 楼 Z65443344 的回复:
如果计算机网络基础没有学过,那么你先恶补一下 否则就不要研究IP什么的问题了,研究也是瞎研究
那你先帮我把问题解决了再说这些,,,上代码吧,,,为什么腾讯,阿里这些得到的IP是正常的,我按照网上的方法得到的始终是199那个?
hcnak 2015-07-02
  • 打赏
  • 举报
回复
引用 12 楼 wangjun8868 的回复:
获得IP不准确太正常了,如果你是有线电视忘的用户 也会出现类似情况,因为你上网的服务器 就是不固定的!
可是为什么会得到美国的199那个,,而我用其它网站测,比如腾讯,阿里这些,测试出来都是一样的,125那个。。。他们是怎么做到的?
於黾 2015-07-02
  • 打赏
  • 举报
回复
如果计算机网络基础没有学过,那么你先恶补一下 否则就不要研究IP什么的问题了,研究也是瞎研究
於黾 2015-07-02
  • 打赏
  • 举报
回复
你在外网服务器,获取的是你的外网IP 而你自己的服务器在内网,获取的是你的内网IP 能一样才怪
编程有钱人了 2015-07-02
  • 打赏
  • 举报
回复
获得IP不准确太正常了,如果你是有线电视忘的用户 也会出现类似情况,因为你上网的服务器 就是不固定的!
爱_逆光 2015-07-01
  • 打赏
  • 举报
回复
我菜鸟,这个能用上不

public static string GetIP()
        {
            string result = String.Empty;
            result = HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
            if (string.IsNullOrEmpty(result))
            {
                result = HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];
            }
            if
                (string.IsNullOrEmpty(result))
            {
                result = HttpContext.Current.Request.UserHostAddress;
            }
            if
                (string.IsNullOrEmpty(result))
            {
                return "127.0.0.1";
            }
            return result;
        }

hcnak 2015-07-01
  • 打赏
  • 举报
回复
引用 8 楼 娃都会打酱油了的回复:
你就想知道你和你同学是怎么访问站点的,内网?还是外网?你不太可能将你的程序部署到了外网上吧?如果是外网的话,你公布出来我们点击测试下
我网站上,用的GoDaddy的服务器tool.akakanch.com
  • 打赏
  • 举报
回复
你就想知道你和你同学是怎么访问站点的,内网?还是外网?你不太可能将你的程序部署到了外网上吧?如果是外网的话,你公布出来我们点击测试下
hcnak 2015-07-01
  • 打赏
  • 举报
回复
引用 4 楼 以专业开发人员为伍的回复:
如果使用国外的服务器,而服务商又是国内的,那么你很可能得到的是面目全非的IP。这个计策在国内的公司里太流行的,根本不会管掏钱的客户怎么想。
什么意思?为什么我的得到的IP和腾讯,阿里,得到的不一样?可是它们得到的是一样且正确的呀,你去试试 tool.akakanch.com
hcnak 2015-07-01
  • 打赏
  • 举报
回复
引用 5 楼 娃都会打酱油了的回复:
100%正确本来就不太可能,而且你就拿你自己的测试了下(还不清楚你到底是怎么测得),连样本都算不上
要不你去试试 tool.akakanch.com。 我同学也这样的,为什么获得的IP是错的?
  • 打赏
  • 举报
回复
100%正确本来就不太可能,而且你就拿你自己的测试了下(还不清楚你到底是怎么测得),连样本都算不上
  • 打赏
  • 举报
回复
如果使用国外的服务器,而服务商又是国内的,那么你很可能得到的是面目全非的IP。这个计策在国内的公司里太流行的,根本不会管掏钱的客户怎么想。
hcnak 2015-07-01
  • 打赏
  • 举报
回复
为什么没人回复?
hcnak 2015-07-01
  • 打赏
  • 举报
回复


62,242

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧