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

Posted

技术标签:

【中文标题】如何在asp.net mvc中使用IP地址获取地理位置【英文标题】:How to get the geographic location using IP Address in asp.net mvc 【发布时间】:2014-08-08 12:20:54 【问题描述】:

我知道这段代码:

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

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

我想根据IP地址知道位置和相关信息。

【问题讨论】:

您要查找的内容称为“地理位置”。 Google 搜索“html 地理定位”之类的内容会产生很多结果,例如:developer.mozilla.org/en-US/docs/Web/API/Geolocation/… 相反,如果您要对给定的 IP 地址进行地理定位,您可以尝试类似“地理编码”之类的东西,其中有一个数字API 数量,例如:developers.google.com/maps/documentation/geocoding codeproject.com/Articles/185508/IP-Address-to-Geolocation 这就是你所需要的 注意:IP 地址通常足以将用户缩小到特定国家/地区,但远不止这些是模糊的。 IP 地址位置将解析到它所属的 ISP 节点,如果它是一个大城市,可能是一个特定的城市,比如纽约,但在更多的郊区或农村地区可能只解析到州用户位于甚至只是像美国中西部这样的地区。为了澄清,我所说的是对用户实际位置的分辨率。您将获得完整的城市、州等信息,但这是针对 节点 而不是用户的。 *** 和代理服务也可以掩盖用户的真实 IP,从而掩盖他们的位置。如果美国用户使用中国代理,他们可能会以中国用户的身份出现。换句话说,不要依赖这些信息做任何重要的事情。如果您确实需要用户的位置信息,请向他们索取。 【参考方案1】:

这应该对你有帮助 - http://freegeoip.net/

freegeoip.net 是一个公共 REST API,用于搜索 IP 地址和主机名的地理位置。 将 HTTP GET 请求发送到:freegeoip.net/format/ip_or_hostname。 API 支持 HTTP 和 HTTPS,支持的格式为 csv、xml 或 json。

【讨论】:

【参考方案2】:

模型绑定用户位置详情

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

【讨论】:

以上是关于如何在asp.net mvc中使用IP地址获取地理位置的主要内容,如果未能解决你的问题,请参考以下文章

当服务器位于 AWS ELB 之后时,ASP.NET Core MVC 应用程序如何获取客户端 IP 地址?

Asp.Net MVC3:使用Javascript的客户端IP地址[重复]

asp.net mvc获取访问者IP根据IP获取城市地址跳转到相应的页面 求大神!

如何在asp.net中获取IP地址

如何获取服务器 IP 地址(在 C#/asp.net 中)?

用户运行托管 IIS 链接时如何在 asp.net 中获取客户端 IP 地址