在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到国家/地区映射表的数据库。例如,请参见此处