我使用登录表单,我想获得用户/客户端ip地址或用户机器名称。现在在包括stackoverflow在内的多个平台上提供了多种解决方案,我几乎尝试了所有的解决方案。我试过**HTTP_X_FORWARDED_FOR **, **REMOTE_ADDR **等,但他们返回我的服务器或公共ip,而不是客户端的ip。这些东西在本地机器上运行良好,但当部署在生产环境上时这些返回server/publicIP,而不是客户端IP。
如何获取客户端的ip地址??
您试过这种方法吗?
string ipAddress = HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
if (!string.IsNullOrEmpty(ipAddress))
{
string[] addresses = ipAddress.Split(',');
if (addresses.Length != 0)
{
ipAddress = addresses[0];
}
}
else
{
ipAddress = HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];
}
// remove any whitespace
ipAddress = ipAddress.Trim();
要获取客户端的私有IP地址,可以使用Dns.GetHostEntry()
方法解析客户端机器的IP地址。
string ipAddress = string.Empty;
IPAddress[] ipAddresses = Dns.GetHostEntry(HttpContext.Current.Request.UserHostAddress).AddressList;
foreach (IPAddress addr in ipAddresses) {
if (addr.AddressFamily == AddressFamily.InterNetwork) {
ipAddress = addr.ToString();
break;
}
}
如果这对你有帮助,请竖起大拇指。