首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >通过IP地址获取用户位置

通过IP地址获取用户位置
EN

Stack Overflow用户
提问于 2010-12-02 02:18:49
回答 13查看 162.5K关注 0票数 83

我有一个用C#编写的ASP.NET网站。

在这个网站上,我需要自动显示一个基于用户位置的起始页。

可以根据用户的IP地址获取用户所在城市的名称吗?

EN

回答 13

Stack Overflow用户

发布于 2016-08-08 19:37:11

使用http://ipinfo.io,如果您每天请求超过1000次,则需要支付费用。

下面的代码需要Json.NET包。

代码语言:javascript
复制
public static string GetUserCountryByIp(string ip)
{
    IpInfo ipInfo = new IpInfo();
    try
    {
        string info = new WebClient().DownloadString("http://ipinfo.io/" + ip);
        ipInfo = JsonConvert.DeserializeObject<IpInfo>(info);
        RegionInfo myRI1 = new RegionInfo(ipInfo.Country);
        ipInfo.Country = myRI1.EnglishName;
    }
    catch (Exception)
    {
        ipInfo.Country = null;
    }
    
    return ipInfo.Country;
}

和我使用的IpInfo类:

代码语言:javascript
复制
public class IpInfo
{
    [JsonProperty("ip")]
    public string Ip { get; set; }

    [JsonProperty("hostname")]
    public string Hostname { get; set; }

    [JsonProperty("city")]
    public string City { get; set; }

    [JsonProperty("region")]
    public string Region { get; set; }

    [JsonProperty("country")]
    public string Country { get; set; }

    [JsonProperty("loc")]
    public string Loc { get; set; }

    [JsonProperty("org")]
    public string Org { get; set; }

    [JsonProperty("postal")]
    public string Postal { get; set; }
}
票数 27
EN

Stack Overflow用户

发布于 2010-12-02 02:22:09

您可以调用IPInfoDB的an API,以便根据IP地址查找位置。

对于"City Precision",您可以这样调用它(您需要注册才能获得免费的API密钥):

代码语言:javascript
复制
 http://api.ipinfodb.com/v2/ip_query.php?key=<your_api_key>&ip=74.125.45.100&timezone=false

下面是VB和C#中的an example,它展示了如何调用该接口。

票数 12
EN

Stack Overflow用户

发布于 2015-10-09 13:53:18

我能够使用客户端IP地址和freegeoip.net应用程序接口在ASP.NET MVC中实现这一点。freegeoip.net是免费的,不需要任何许可证。

下面是我使用的示例代码。

代码语言:javascript
复制
String UserIP = HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
if (string.IsNullOrEmpty(UserIP))
{
    UserIP = HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];
}
string url = "http://freegeoip.net/json/" + UserIP.ToString();
WebClient client = new WebClient();
string jsonstring = client.DownloadString(url);
dynamic dynObj = JsonConvert.DeserializeObject(jsonstring);
System.Web.HttpContext.Current.Session["UserCountryCode"] = dynObj.country_code;

你可以通过this post获取更多的details.Hope,这很有帮助!

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4327629

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档