asp.net 怎样获取局域网中客户端的真实外网IP
Response.Write("1<br/>" + HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"] + "<br/>");
Response.Write("2<br/>" + HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"] + "<br/>");
Response.Write("3<br/>" + HttpContext.Current.Request.UserHostAddress + "<br/>");
Response.Write("4<br/>" + System.Net.Dns.GetHostAddresses(System.Net.Dns.GetHostName()).GetValue(0).ToString() + "<br/>");
这几种方法都不行,获取的都是局域网内的IP,我想得到的是像你打开http://www.ip138.com
的这种IP,我就想判断IP是不是电信的,咋就这么难。。。 asp.net 获取IP
[解决办法]
放在互联网上测试就可以看到互联网IP了,在局域网或本机测试是看不到互联网IP的,因为这种情况不需要经历任何互联网的节点。
[解决办法]
你的网站放在那里?是不是局域网和互联网都能同时访问?
[解决办法]
你网站不是放在外网吧,这样当然不行吧
[解决办法]
似乎是这样的
[解决办法]
/// 获得客户端IP
///
/// <returns></returns>
private string getIp()
{
// 穿过代理服务器取远程用户真实IP地址
string Ip = string.Empty;
if (Request.ServerVariables["HTTP_VIA"] != null)
{
if (Request.ServerVariables["HTTP_X_FORWARDED_FOR"] == null)
{
if (Request.ServerVariables["HTTP_CLIENT_IP"] != null)
Ip = Request.ServerVariables["HTTP_CLIENT_IP"].ToString();
else
if (Request.ServerVariables["REMOTE_ADDR"] != null)
Ip = Request.ServerVariables["REMOTE_ADDR"].ToString();
else
Ip = "202.96.134.133";
}
else
Ip = Request.ServerVariables["HTTP_X_FORWARDED_FOR"].ToString();
}
else if (Request.ServerVariables["REMOTE_ADDR"] != null)
{
Ip = Request.ServerVariables["REMOTE_ADDR"].ToString();
}
else
{
Ip = "202.96.134.133";
}
return Ip;
}
测试看看,另外,有一种工具叫VPN,改IP也不是什么新鲜事。