我需要帮助来查找正在浏览我的网站的用户的 IP 地址(使用 C# 代码)。
我对系统 IP 地址、ISP IP 地址、网络地址以及什么是 IPV4 和 IPV6 感到困惑。
以下是我从其他来源获得的代码:
protected string GetUserIP()
{
string userIP = string.Empty;
HttpContext context = System.Web.HttpContext.Current;
string ipAddress = context.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
if (!string.IsNullOrEmpty(ipAddress))
{
string[] addresses = ipAddress.Split(',');
if (addresses.Length != 0)
{
userIP = addresses[0];
}
}
else if (HttpContext.Current.Request.UserHostAddress.Length != 0)
{
userIP = HttpContext.Current.Request.UserHostAddress;
}
return userIP;
}
但在这里我没有得到预期的结果。
在我的本地主机中测试时,我得到了 127.0.0.1
当我将它部署到我的开发服务器并在本地机器上浏览页面时,我得到了不同的地址。
我尝试在其他机器上访问相同的 URL,并且 IP 地址相同。
我用来访问同一网络中的开发服务器部署页面的系统。
那么它是我的代码返回的网络IP..吗?
因为当我使用 ipconfig 命令找到我的 IP 时,它又变了!
当我使用第 3 方网站 ( http://www.whatismyip.com/ip-address-lookup/ ) 检查我的 IP 时,它显示了我预期的实际 IP。如何使用 C# 代码获取实际 IP?
我的最终目标是,使用 Maxmind City DB 获取正在浏览我的网站的用户位置详细信息,但为此我需要传递浏览用户的 IP。
string ip = GetUserIP();
string db = “GeoIP2-City.mmdb";
var reader = new DatabaseReader(db);
var city = reader.City(ip);
double? lat = city.Location.Latitude;
double? lang = city.Location.Longitude;
对于从上面代码中获得的 IP,当我尝试从 Maxmind DB 获取信息时出现异常(在数据库中找不到 IP),但对于从“whatismyip”网站获得的 IP,我从 Maxmind DB 获得了详细信息.
希望我的问题很清楚。如果有人有任何意见,请告诉我。
谢谢,沙拉特