正常获取ip的方法是:context.Request.UserHostAddress
但是当获取到的是本机ip时,值为 ::1
若非要获取本机的ip,可以用下面的方法:
#region 获取ip(包括获取本机ip)
public static string GetIP4Address()
{
string IP4Address = String.Empty;
foreach (IPAddress IPA in Dns.GetHostAddresses(HttpContext.Current.Request.UserHostAddress))
{
if (IPA.AddressFamily.ToString() == "InterNetwork")
{
IP4Address = IPA.ToString();
break;
}
}
if (IP4Address != String.Empty)
{
return IP4Address;
}
foreach (IPAddress IPA in Dns.GetHostAddresses(Dns.GetHostName()))
{
if (IPA.AddressFamily.ToString() == "InterNetwork")
{
IP4Address = IPA.ToString();
break;
}
}
return IP4Address;
}
#endregion
方法二:
string clientIP = HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
clientIP = StringUtility.SqlStringFilter(clientIP);
if (string.IsNullOrEmpty(clientIP))
{
clientIP = HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];
}