我想让登录用户国家通过他的IP。第一个函数获取ip地址。
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和返回国家。
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。
发布于 2020-10-08 18:19:14
如果您想获取客户端的IP位置,则需要使用客户端的IP地址,而不是主机。要在ASP.Net核心中这样做,您可以这样做:
var clientIpAddress = request.HttpContext.Connection.RemoteIpAddress;从这里,您可以使用clientIpAddress作为传递给GetUserCountryByIp函数的IP。
https://stackoverflow.com/questions/64267957
复制相似问题