如何在asp.net mvc中使用IP地址获取地理位置

时间:2014-08-08 12:20:54

标签: asp.net-mvc geolocation ip

我知道这段代码:

string ipAddress = Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
        if (string.IsNullOrEmpty(ipAddress))
        {
            ipAddress = Request.ServerVariables["REMOTE_ADDR"];
        }

会给我用户的IP地址,但我不知道如何获取用户的位置

我想知道基于IP地址的位置和相关信息。

2 个答案:

答案 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