在我的应用程序中,我想跟踪要存储在数据库中的客户端/用户位置。我正在使用此代码获取用户IP地址
string VisitorsIPAddr = string.Empty;
if (HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"] != null)
{
VisitorsIPAddr = HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"].ToString();
}
else if (HttpContext.Current.Request.UserHostAddress.Length != 0)
{
VisitorsIPAddr = HttpContext.Current.Request.UserHostAddress;
}
ipAddress = VisitorsIPAddr;
使用上面的代码我得到了IP地址。现在下一步获取时区,地区,城市名称,国家名称,国家代码,气象站,ISP等。
但是,我不想使用任何其他第三方API来获取除Google以外的详细信息。任何人都可以回复以解决我的问题。
是否可以使用c#在asp.net中获取上述详细信息,或者我必须使用任何其他服务。
使用IP我想获得客户端地址的精确位置。
等详细信息答案 0 :(得分:4)
是的,确定,Google Maps JS API v3确实提供了IP到位置地理编码服务。您可以使用此代码根据用户的IP地址获取用户位置:
// If ClientLocation was filled in by the loader, use that info instead
if (google.loader.ClientLocation) {
zoom = 13;
latlng = new google.maps.LatLng(google.loader.ClientLocation.latitude, google.loader.ClientLocation.longitude);
location = "Showing IP-based location: <b>" + getFormattedLocation() + "</b>";
}
除了Lat / Lng,google.loader.ClientLocation
还会返回包含城市,国家,国家/地区代码,地区等的地址...
另外,请看the example here。
即使地址为空,您也可以随时使用Geocoding Service返回的Lat / Lng来获取地址详细信息。
但是,正如official site中提到的那样:
...我们不建议使用此方法(使用IP地址检测用户的位置)进行地理定位。 W3C方法是最简单和最全面支持的方法,因此它应优先于其他方法。
同样在issue tracker:
...几年前我们停止了记录,并且由于精度提高而推荐了基于HTML的解决方案,但功能本身并没有从Loader中删除......
执行此操作的最佳方法是使用HTML5-based方法。但是,如果您使用的是基于IP的,请确保您发现Google可以随时放弃对它的支持。
答案 1 :(得分:0)
您可以使用geoIP MaxMind Web服务在C#中获取位置详细信息。 以下链接可能对您有所帮助。
http://dev.maxmind.com/geoip/geoip2/web-services/
这是可用的Github存储库。