在ASP.NET页面中查找客户端位置

如何在我的ASP.NET页面中找到客户端位置? 实际上我使用了System.Globalization.RegionInfo.CurrentRegion ,但它显示了控制面板中的设置。 那么我可以使用任何方法找到确切的位置吗?

并不是说它会给你100%的准确性,但你可以使用hostip.info

它们提供了一个API,为您提供通过HTTP请求传递的IP地址的位置。 您可以使用WebClient对象来调用API并解析结果。 Scott Hanselman在这篇博客文章中有一个很好的例子(下面我的例子基于他的文章)。 hostip.info的数据库基于一个开放项目,社区将IP位置提供给……因此无法保证是正确的。

对于初学者,您需要确定客户端IP地址,如下所示:

 string ipaddress = HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"]; 

获得IP后,您可以创建WebClient对象并调用API …

示例API调用:

 string r; using (var w = new WebClient()) { r = w.DownloadString(String.Format("http://api.hostip.info/?ip={0}&position=true", ipaddress)); } 

结果将是XML,看起来像这样:

   This is the Hostip Lookup Service hostip  inapplicable    Sugar Grove, IL UNITED STATES US     -88.4588,41.7696       

IPAddressExtensions是一个免费的CodePlex类库,如果你想要的只是IP地址所在的国家。

它不需要连接到另一个网站等。它是开源的……所以坚果;)

您可以通过查找客户端IP地址来猜测IP地址所属的国家/地区。 有些页面提供包含IP到国家/地区映射表的数据库。例如,请参见此处