首页新闻找找看学习计划

asp.net 取客户端IP

0
悬赏园豆:20 [已解决问题] 解决于 2011-02-01 22:26

问题:

asp.net取得的客户端IP会是:::1呢,而不是192.168.1.17之类的(WIN7本机调试)

代码:

 

protected void Page_Load(object sender, EventArgs e)
{
if (!this.IsPostBack)
{
string ip = Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
if (String.IsNullOrEmpty(ip))
{
ip
= Request.ServerVariables["REMOTE_ADDR"];
}
Response.Write(
"客户端IP地址:" + ip);
}
}

 

运行结果:

 

客户端IP地址:::1

水无声的主页 水无声 | 初学一级 | 园豆:92
提问于:2011-01-27 09:50
< >
分享
最佳答案
0

::1是IPv6格式的地址

你的代码我这里显示是127.0.0.1,应该是我用的XP,没有装IPv6的关系

Request.ServerVariables["Remote_Addr"]你试下这个

收获园豆:20
六芒星 | 小虾三级 |园豆:627 | 2011-01-27 10:14
我是使用WINDOW7的系统,但IPv6项也被我禁用了啊, 你的代码运行的还是::1
水无声 | 园豆:92 (初学一级) | 2011-01-27 10:41
::1表示的是127.0.0.1
六芒星 | 园豆:627 (小虾三级) | 2011-01-27 18:02
其他回答(4)
0

首先你不可能让客户端也通过设置该变ip的类型为ipv4,所以只能判断ip地址是ipv4还是ipv6,然后转换ipv6为ipv4

ipv6转ipv4的 http://wenku.baidu.com/view/a274f5791711cc7931b71667.html

Tear Y | 园豆:784 (小虾三级) | 2011-01-27 13:02
按IPv6转IPv4的方式,::1也不能转换成192.168.1.17(我本机的局域网IP)。这个问题真是IPv6的引起的吗??
支持(0) 反对(0) 水无声 | 园豆:92 (初学一级) | 2011-01-27 16:55
0

public static string UserIPAddress
{
get
{
string userIP;

HttpRequest Request = Current.Request;

if (Request.ServerVariables["HTTP_X_FORWARDED_FOR"] != "")
userIP
= Request.ServerVariables["REMOTE_ADDR"];
else
userIP
= Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
if (userIP == null || userIP == "")
userIP
= Request.UserHostAddress;
return userIP;
}
}

 

keepsilence | 园豆:427 (菜鸟二级) | 2011-01-27 13:16
一样样的。。。
支持(0) 反对(0) 水无声 | 园豆:92 (初学一级) | 2011-01-27 15:43
0

本机运行的是http://localhost:xx/xxx.aspx 吧,如果是这样我觉得获取到的就是127.0.0.1,而不是局域网内的IP吧。

纯属个人猜想。

manji | 园豆:633 (小虾三级) | 2011-01-28 14:09
0

localhost获取的一定是127.0.0.1,所以同意Salvia的答案

沉默的糕点 | 园豆:1786 (小虾三级) | 2011-01-30 10:16
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册