首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在.Net核心中按用户获取国家Ip地址?

如何在.Net核心中按用户获取国家Ip地址?
EN

Stack Overflow用户
提问于 2020-10-08 17:43:15
回答 1查看 3.1K关注 0票数 0

我想让登录用户国家通过他的IP。第一个函数获取ip地址。

代码语言:javascript
复制
 public static string GetLocalIPAddress()
 {
    var host = Dns.GetHostEntry(Dns.GetHostName());
    foreach (var ip in host.AddressList)
    {
        if (ip.AddressFamily == AddressFamily.InterNetwork)
        {
            return ip.ToString();
        }
    }
    throw new Exception("No network adapters with an IPv4 address in the system!");
}

第二个功能是接收ip和返回国家。

代码语言: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;
    }

这里的问题是第二个函数不返回任何数据。当我在https://ipinfo.io/IP尝试我的IP时,它会返回bogon=true。

如何才能返回非波贡ip。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-10-08 18:19:14

如果您想获取客户端的IP位置,则需要使用客户端的IP地址,而不是主机。要在ASP.Net核心中这样做,您可以这样做:

代码语言:javascript
复制
var clientIpAddress = request.HttpContext.Connection.RemoteIpAddress;

从这里,您可以使用clientIpAddress作为传递给GetUserCountryByIp函数的IP。

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

https://stackoverflow.com/questions/64267957

复制
相关文章

相似问题

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