内网 ip 192.168.100.32:7538
映射到 外网 ip 211.160.171.50
获取ip 方法 (page.Request.UserHostAddress.ToString())
如果都是内网用户登录 就可以获取到ip (没有问题)
如果外网登录 获取的 ip 都192.168.100.1(有问题)
测试 了 好几个方法获取ip 都有问题。
还是服务器 还需要配置什么啊?内容端口7538,映射的外网端口默认为80吧,2个端口不一样,以前端口一样 是都没有问题的。
问题 :外网用户登录怎样可以获取到客户端ip呢,
1 /// <summary> 2 /// 取得客户端真实IP,如果有代理则取第一个非内网地址 3 /// http://en.wikipedia.org/wiki/X-Forwarded-For 4 /// </summary> 5 public static string GetIPAddress() 6 { 7 string proxy_ip = HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];//取得代理 8 string ip; 9 if (string.IsNullOrEmpty(proxy_ip)) 10 { 11 ip = HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"]; 12 } 13 else 14 { 15 string[] ipArray = proxy_ip.Split(','); 16 ip = ipArray[0]; 17 } 18 return ip; 19 }
还是获取的 192.168.100.1 哦
外网登陆获取的是客户端的外网IP。
HttpContext.Current.Request.UserHostAddress;
可我 获取到的ip 是 192.168.100.1啊 怎么回事啊
@mkj小陈: 你应该是在内网访问吧。
支持楼上...HttpContext.Current.Request.UserHostAddress;获取请求IP
可我 获取到的ip 是 192.168.100.1啊 怎么回事啊 ==> 因为客户端是通过内网访问。也就是说虽然在内网的用户使用 211.160.171.50 访问,但是路由器在路由选择时选择了内网路由,因此所有访问通过内网即可完成,不必出了内网,再从外网路由进来。
但是外网用户需要访问啊,获取不到ip 啊 纠结
@mkj小陈: 你怎么知道来访问的用户是外网用户?他是自己通过 ADSL 拨号连接 Internet 的吗?
你最好写一个简单的页面,把请求的 IP 地址都显示出来,我们通过外网就可以访问,这样就可以测试。
如果你是双网卡的机器,怎么会出现这种情况?
外网机器都是这丫啊 ,所有外网用户获取的ip 都是 192.168.100.1
@mkj小陈: 你们最近路由器的设置有没有改动过?
192.168.100.1 这个地址应该是你的网关吧?感觉问题不出在你的IIS上面,而是你的路由映射表上。你向这个方向找找原因看看?
@bitbug: 关键是 我的日志里面 显示所有用户 都是 192.168.100.1 郁闷啊, 以前 映射外网ip 带有端口号的,现在没有端口号了,获取用户ip 就有问题。内网端口号7538,映射外网端口80 ,就这区别,端口号不一样,就不行了。哎。。
@mkj小陈: 额 超出能力范围了。。。。同求解
@bitbug: @mkj小陈: 感谢大家哈,原来是防火墙 弄了,现在解决了。
加油
恩
最后防火墙是怎么搞,才能获取到源ip