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()