C# 从网站中的访问者获取国家名称

C# 从网站中的访问者获取国家名称,c#,geolocation,maxmind,C#,Geolocation,Maxmind,我想知道一种方法,我可以得到所有访问网站(我的网站)的访问者的国家名称。我看过maxmind.com,设置起来很复杂,因为我是初学者。希望能得到一些好的答案。我已经在这个网站上尝试了很多东西,但没有找到解决方案 GeoServiceReference.GeocodeServiceClient client = new GeoServiceReference.GeocodeServiceClient(); var countries = new List<string>(); fo

我想知道一种方法,我可以得到所有访问网站(我的网站)的访问者的国家名称。我看过
maxmind.com
,设置起来很复杂,因为我是初学者。希望能得到一些好的答案。我已经在这个网站上尝试了很多东西,但没有找到解决方案

GeoServiceReference.GeocodeServiceClient client = new GeoServiceReference.GeocodeServiceClient();

var countries = new List<string>();

for (double lat = 0; lat < 360; lat+=0.1)
    for(double lon = 0; lon < 360; lon+=0.1)
    {
        var result = client.ReverseGeocode(new GeoServiceReference.ReverseGeocodeRequest
        {
            Location = new GeoServiceReference.Location
            {
                Latitude = lat,
                Longitude = lon
            }
        });

        if (!countries.Contains(result.Results.First().Address.CountryRegion))
        {
            Console.WriteLine(result.Results.First().Address.CountryRegion);
            countries.Add(result.Results.First().Address.CountryRegion);
        }
    }
GeoServiceReference.GeocodeServiceClient客户端=新的GeoServiceReference.GeocodeServiceClient();
var countries=新列表();
对于(双纬度=0;纬度<360;纬度+=0.1)
用于(双lon=0;lon<360;lon+=0.1)
{
var result=client.ReverseGeocode(新的GeoServiceReference.ReverseGeocodeRequest
{
位置=新的GeoServiceReference.Location
{
纬度=纬度,
经度=经度
}
});
如果(!countries.Contains(result.Results.First().Address.CountryRegion))
{
Console.WriteLine(result.Results.First().Address.CountryRegion);
countries.Add(result.Results.First().Address.CountryRegion);
}
}

作为Maxmind的替代方案,提供基于Maxmind遗留数据库的免费REST服务。它非常易于使用-您只需以以下格式向URL发出HTTP GET请求:

http://freegeoip.net/json/{ip_或_主机名}
您可以使用类似的库(同样,非常易于使用)发出此请求并解析结果

下面是一个简单的例子,应该为您指明正确的方向:

public Geolocation GetGeolocationData(string ipAddress)
{
    var client = new RestClient("http://freegeoip.net/");

    var request = new RestRequest("json/{ip}");
    request.AddUrlSegment("ip", ipAddress);

    var response = client.Execute<Geolocation>(request);
    return response.Data;
}

最方便的工具是API,或者如果您想托管数据并在服务器上执行查找,则可以考虑获取数据库副本。

public class Geolocation
{
    public string CountryName { get; set; }
    ...
}