Asp.net 获取用户 IP 地址
Asp.net Get User IP address
var result = GetUser_IP();
protected string GetUser_IP()
{
string ipList = Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
if (!string.IsNullOrEmpty(ipList))
{
return ipList.Split(',')[0];
}
return Request.ServerVariables["REMOTE_ADDR"];
}
结果总是显示 ::1 为什么我看不到 IP 地址而不是 ::1
IP 地址结果的 ::1 是什么?
我在代码中遗漏了什么,我怎样才能像 http://whatismyipaddress.com/ 中那样获得我的 IP 地址?
如有任何帮助,我们将不胜感激。
谢谢。
是 ::1
是 localhost 的 IP 地址。当您使用 visual studio 运行 您的应用程序时,它会为您提供一个本地主机的 IP 地址。
::1
是IPv6中的环回地址。将其视为 127.0.0.1
.
的 IPv6 版本
使用下面的方法
public static string GetVisitorIPAddress(HttpContext _context)
{
bool GetLan = true;
string visitorIPAddress = _context.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
if (String.IsNullOrEmpty(visitorIPAddress))
visitorIPAddress = _context.Request.ServerVariables["REMOTE_ADDR"];
if (string.IsNullOrEmpty(visitorIPAddress))
visitorIPAddress = _context.Request.UserHostAddress;
if (string.IsNullOrEmpty(visitorIPAddress) || visitorIPAddress.Trim() == "::1")
{
GetLan = true;
visitorIPAddress = string.Empty;
}
if (GetLan)
{
if (string.IsNullOrEmpty(visitorIPAddress))
{
//This is for Local(LAN) Connected ID Address
string stringHostName = Dns.GetHostName();
//Get Ip Host Entry
IPHostEntry ipHostEntries = Dns.GetHostEntry(stringHostName);
//Get Ip Address From The Ip Host Entry Address List
System.Net.IPAddress[] arrIpAddress = ipHostEntries.AddressList;
try
{
visitorIPAddress = arrIpAddress[arrIpAddress.Length - 0].ToString();
}
catch
{
try
{
visitorIPAddress = arrIpAddress[0].ToString();
}
catch
{
try
{
arrIpAddress = Dns.GetHostAddresses(stringHostName);
visitorIPAddress = arrIpAddress[0].ToString();
}
catch
{
visitorIPAddress = "127.0.0.1";
}
}
}
}
}
return visitorIPAddress;
}
var result = GetUser_IP();
protected string GetUser_IP()
{
string ipList = Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
if (!string.IsNullOrEmpty(ipList))
{
return ipList.Split(',')[0];
}
return Request.ServerVariables["REMOTE_ADDR"];
}
结果总是显示 ::1 为什么我看不到 IP 地址而不是 ::1
IP 地址结果的 ::1 是什么?
我在代码中遗漏了什么,我怎样才能像 http://whatismyipaddress.com/ 中那样获得我的 IP 地址?
如有任何帮助,我们将不胜感激。
谢谢。
是 ::1
是 localhost 的 IP 地址。当您使用 visual studio 运行 您的应用程序时,它会为您提供一个本地主机的 IP 地址。
::1
是IPv6中的环回地址。将其视为 127.0.0.1
.
使用下面的方法
public static string GetVisitorIPAddress(HttpContext _context)
{
bool GetLan = true;
string visitorIPAddress = _context.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
if (String.IsNullOrEmpty(visitorIPAddress))
visitorIPAddress = _context.Request.ServerVariables["REMOTE_ADDR"];
if (string.IsNullOrEmpty(visitorIPAddress))
visitorIPAddress = _context.Request.UserHostAddress;
if (string.IsNullOrEmpty(visitorIPAddress) || visitorIPAddress.Trim() == "::1")
{
GetLan = true;
visitorIPAddress = string.Empty;
}
if (GetLan)
{
if (string.IsNullOrEmpty(visitorIPAddress))
{
//This is for Local(LAN) Connected ID Address
string stringHostName = Dns.GetHostName();
//Get Ip Host Entry
IPHostEntry ipHostEntries = Dns.GetHostEntry(stringHostName);
//Get Ip Address From The Ip Host Entry Address List
System.Net.IPAddress[] arrIpAddress = ipHostEntries.AddressList;
try
{
visitorIPAddress = arrIpAddress[arrIpAddress.Length - 0].ToString();
}
catch
{
try
{
visitorIPAddress = arrIpAddress[0].ToString();
}
catch
{
try
{
arrIpAddress = Dns.GetHostAddresses(stringHostName);
visitorIPAddress = arrIpAddress[0].ToString();
}
catch
{
visitorIPAddress = "127.0.0.1";
}
}
}
}
}
return visitorIPAddress;
}