Вам понадобится сторонний сервис или инструмент для сбора GeoLocation. Я предлагаю попробовать 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. Конечно, если вы хотите использовать эту информацию в своем коде, вам как-то придется передать ее бэкэнду.