现在要做IP限制,Request.UserHostAddress获取客户端的IP,但是现在这个方法获取到的就是外网的IP,怎么获取到真正的客户端的IP地址,在有外网的情况下!
ASP.NET是没有办法的,同一局域网内的所有机器访问你的站点,Request.UserHostAddress都是同样的(即这些机器公用的外网IP),这些机器他们并没有“自己的”(也就是你所谓的“真正"的,其实这么说也不太准确)外网IP。
试试这里的方法:
ip = Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
// If there is no proxy, get the standard remote address
if ((ip == null) || (ip == "") || (ip.ToLower() == "unknown"))
ip = Request.ServerVariables["REMOTE_ADDR"];
这个获取到的是什么?比如,局域网里5个人,IP分别是192.168.0.1~192.168.0.5,公用一个adsl上网,外网ip是61.129.33.54,这个方法返回的是啥?
@水牛刀刀: Request.ServerVariables["HTTP_X_FORWARDED_FOR"]应该返回的是61.129.33.54
@dudu: 那还不是一样的?我现在就是想要获得比如说192.168.0.1这个值怎么获得?
以后不要问这类问题,上面的都是错的.
本地的IP你要获取,必须通过本地的代码.js做不到,写一个插件.
... 太牛X了
你有写过这样的控件吗?如果有的话能不能共享下?
.net好像是获取不到局域网真实的IP地址的,大部分都是获取局域网对外的ip地址。