Вам необходимо использовать сторонний сервис или инструмент для сбора геоданных. Я предлагаю попробовать IPInfoDB, http://www.ipinfodb.com, который является бесплатной службой GeoLocation. После того, как вы зарегистрируетесь для получения ключа API вы можете потреблять услугу в C# следующим образом:
public static GeoLocation HostIpToPlaceName(string ip)
{
string url = "http://api.ipinfodb.com/v2/ip_query.php?key={enterAPIKeyHere}&ip={0}&timezone=false";
url = String.Format(url, ip);
var result = XDocument.Load(url);
var location = (from x in result.Descendants("Response")
select new GeoLocation
{
City = (string)x.Element("City"),
Region = (string)x.Element("RegionName"),
CountryId = (string)x.Element("CountryName")
}).First();
return location;
}
Есть много услуг, которые предоставляют GeoLocation но IPInfoDB бесплатно и работает хорошо для меня.
Вы также можете собрать эту информацию на стороне клиента, используя HTML5, как показано на странице http://html5demos.com/geo. Конечно, если вы хотите использовать эту информацию в своем коде, вам нужно как-то передать ее на сервер.
Вы сказали, что искали. Что ты нашел? Вы ищете 'IP GeoLocation'. –
Да, я нашел, но я написал выше, я хочу, чтобы он был моим. Как предоставить сторонним сайтам эту информацию? Я не хочу, чтобы меня зависели от ipionfodb или таких, как! где они получают информацию? – icaptan
Единственный способ сделать это без зависимости от третьей стороны - использовать возможности GeoLocation HTML5 и сделать это на стороне клиента. Это имеет ограничения в отношении поддержки браузера. Я думаю, вы также можете приобрести базу данных IP GeoLocation и интегрировать ее в свой сервер. – Mark