if (null == strHostIP || strHostIP == String.Empty)
{
strHostIP = HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];
}
部署上去可获得其他电脑登录的ip,但是如果在本机运行的话则会出现ip变::1,这是为什么
10 个解决方案
#1
#2
把服务器的hosts文件里面的 localhost ::1 注释掉,只保留127.0.0.1 即可显示127.0.0.1
#3
那请问可不可以判断是用了什么格式,而不去改host文件呢
#4
# 127.0.0.1 localhost
我只保留了这个也还是不行求改法
#5
有缓存的吧?
网卡禁用一下,再启用,试试
网卡禁用一下,再启用,试试
#6
Request.UserAddress
#7
还是::1 不是缓存的缘故
#8
这个在Host里面默认已经给注释掉了。
其实,要不显示这个需要把IPv6给关掉,但是不推荐这么干,因为关掉Ipv6在新型的系统中可能会出现不可预知的错误。
用DNS工具类和Environment获取本机机器名结合使用来获得本机在局域网中的IP吧,这个是可行的。详见 Dns <- 类名很简单
或者如果要想显示127.0.0.1,那么就把::1映射成127.0.0.1,不用想太多。
#9
我是新手!能给个例子吗!我对着方面不会
#10
public static string GetClientIPv4Address()
{
string ipv4 = String.Empty;
foreach (IPAddress ip in Dns.GetHostAddresses(GetClientIP()))
{
if (ip.AddressFamily.ToString() == "InterNetwork")
{
ipv4 = ip.ToString();
break;
}
}
if (ipv4 != String.Empty)
{
return ipv4;
}
// 利用 Dns.GetHostEntry 方法,由获取的 IPv6 位址反查 DNS 纪录,
// 再逐一判断何者为 IPv4 协议,即可转为 IPv4 位址。
foreach (IPAddress ip in Dns.GetHostEntry(GetClientIP()).AddressList)
//foreach (IPAddress ip in Dns.GetHostAddresses(Dns.GetHostName()))
{
if (ip.AddressFamily.ToString() == "InterNetwork")
{
ipv4 = ip.ToString();
break;
}
}
return ipv4;
}
public static string GetClientIP()
{
if (null == HttpContext.Current.Request.ServerVariables["HTTP_VIA"])
{
return HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];
}
else
{
return HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
}
}
解决方法
{
string ipv4 = String.Empty;
foreach (IPAddress ip in Dns.GetHostAddresses(GetClientIP()))
{
if (ip.AddressFamily.ToString() == "InterNetwork")
{
ipv4 = ip.ToString();
break;
}
}
if (ipv4 != String.Empty)
{
return ipv4;
}
// 利用 Dns.GetHostEntry 方法,由获取的 IPv6 位址反查 DNS 纪录,
// 再逐一判断何者为 IPv4 协议,即可转为 IPv4 位址。
foreach (IPAddress ip in Dns.GetHostEntry(GetClientIP()).AddressList)
//foreach (IPAddress ip in Dns.GetHostAddresses(Dns.GetHostName()))
{
if (ip.AddressFamily.ToString() == "InterNetwork")
{
ipv4 = ip.ToString();
break;
}
}
return ipv4;
}
public static string GetClientIP()
{
if (null == HttpContext.Current.Request.ServerVariables["HTTP_VIA"])
{
return HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];
}
else
{
return HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
}
}
解决方法
#1
#2
把服务器的hosts文件里面的 localhost ::1 注释掉,只保留127.0.0.1 即可显示127.0.0.1
#3
那请问可不可以判断是用了什么格式,而不去改host文件呢
#4
# 127.0.0.1 localhost
我只保留了这个也还是不行求改法
#5
有缓存的吧?
网卡禁用一下,再启用,试试
网卡禁用一下,再启用,试试
#6
Request.UserAddress
#7
还是::1 不是缓存的缘故
#8
这个在Host里面默认已经给注释掉了。
其实,要不显示这个需要把IPv6给关掉,但是不推荐这么干,因为关掉Ipv6在新型的系统中可能会出现不可预知的错误。
用DNS工具类和Environment获取本机机器名结合使用来获得本机在局域网中的IP吧,这个是可行的。详见 Dns <- 类名很简单
或者如果要想显示127.0.0.1,那么就把::1映射成127.0.0.1,不用想太多。
#9
我是新手!能给个例子吗!我对着方面不会
#10
public static string GetClientIPv4Address()
{
string ipv4 = String.Empty;
foreach (IPAddress ip in Dns.GetHostAddresses(GetClientIP()))
{
if (ip.AddressFamily.ToString() == "InterNetwork")
{
ipv4 = ip.ToString();
break;
}
}
if (ipv4 != String.Empty)
{
return ipv4;
}
// 利用 Dns.GetHostEntry 方法,由获取的 IPv6 位址反查 DNS 纪录,
// 再逐一判断何者为 IPv4 协议,即可转为 IPv4 位址。
foreach (IPAddress ip in Dns.GetHostEntry(GetClientIP()).AddressList)
//foreach (IPAddress ip in Dns.GetHostAddresses(Dns.GetHostName()))
{
if (ip.AddressFamily.ToString() == "InterNetwork")
{
ipv4 = ip.ToString();
break;
}
}
return ipv4;
}
public static string GetClientIP()
{
if (null == HttpContext.Current.Request.ServerVariables["HTTP_VIA"])
{
return HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];
}
else
{
return HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
}
}
解决方法
{
string ipv4 = String.Empty;
foreach (IPAddress ip in Dns.GetHostAddresses(GetClientIP()))
{
if (ip.AddressFamily.ToString() == "InterNetwork")
{
ipv4 = ip.ToString();
break;
}
}
if (ipv4 != String.Empty)
{
return ipv4;
}
// 利用 Dns.GetHostEntry 方法,由获取的 IPv6 位址反查 DNS 纪录,
// 再逐一判断何者为 IPv4 协议,即可转为 IPv4 位址。
foreach (IPAddress ip in Dns.GetHostEntry(GetClientIP()).AddressList)
//foreach (IPAddress ip in Dns.GetHostAddresses(Dns.GetHostName()))
{
if (ip.AddressFamily.ToString() == "InterNetwork")
{
ipv4 = ip.ToString();
break;
}
}
return ipv4;
}
public static string GetClientIP()
{
if (null == HttpContext.Current.Request.ServerVariables["HTTP_VIA"])
{
return HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];
}
else
{
return HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
}
}
解决方法