我知道这段代码:
string ipAddress = Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
if (string.IsNullOrEmpty(ipAddress))
{
ipAddress = Request.ServerVariables["REMOTE_ADDR"];
}
会给我用户的IP地址,但我不知道如何获取用户的位置
我想知道基于IP地址的位置和相关信息。
答案 0 :(得分:5)
这可以帮助您 - http://freegeoip.net/
freegeoip.net是一个公共REST API,用于搜索IP地址和主机名的地理位置。 将HTTP GET请求发送到:freegeoip.net/{format}/ {ip_or_hostname}。 API支持HTTP和HTTPS,支持的格式为csv,xml或json。
答案 1 :(得分:1)
用于绑定用户位置详细信息的模型
public class IpInfo
{
[JsonProperty("ip")]
public string Ip { get; set; }
[JsonProperty("city")]
public string City { get; set; }
[JsonProperty("region_name")]
public string Region { get; set; }
[JsonProperty("country_name")]
public string Country { get; set; }
[JsonProperty("time_zone")]
public string TimeZone { get; set; }
[JsonProperty("longitude")]
public string Longitude { get; set; }
[JsonProperty("latitude")]
public string Latitude { get; set; }
}
功能
private IpInfo GetUserLocationDetailsyByIp(string ip)
{
var ipInfo = new IpInfo();
try
{
var info = new WebClient().DownloadString("http://freegeoip.net/json/" + ip);
ipInfo = JsonConvert.DeserializeObject<IpInfo>(info);
}
catch (Exception ex)
{
//Exception Handling
}
return ipInfo;
}
使用IP值调用功能
var ipDetails = GetUserCountryByIp("8.8.8.8"); //IP value