我需要帮助才能使用Maxmin服务让当前用户在SiteCore中使用lat / lang。 我正在尝试使用默认配置和免费查找。 我使用下面的API来获得结果。 的 Tracker.CurrentVisit.Latitude Tracker.CurrentVisit.Longitude
但它给了我超值的价值。
实际上当我尝试使用IP时 的 Tracker.CurrentVisit.Ip ,我有私有IP但不是公共IP。 我在测试服务器中部署了我的解决方案并在本地机器中访问 我现在没有任何许可证,但据我所知,有一些免费的查询最初几次访问。 当我尝试使用时 的 Tracker.CurrentVisit.GeoIp.Ip 它失败了,因为GeoIp为空。
Tracker.CurrentVisit.GeoIp.Ip 之间的区别是什么? 和 的 Tracker.CurrentVisit.Ip 如果有人有任何意见,请告诉我
-Thanks, 沙拉斯
答案 0 :(得分:0)
已经有一段时间了,但我相信网络服务不是免费的。免费版本是您在本地使用的数据库(csv文件)。您可以在此处找到更多信息:http://dev.maxmind.com/geoip/geoip2/downloadable/#MaxMind_APIs
答案 1 :(得分:0)
通过ILSpy查看Sitecore.Analytics.dll的代码,Tracker.CurrentVisit.Ip返回当前会话的分析数据行的IP属性。它是一个字节数组,取自我怀疑的HTTP请求数据。 Tracker.CurrentVisit.GeoIp返回当前会话的GeoIP查找的分析数据库行。它是VisitorDataSet.GeoIpsRow类型的对象。
由于GeoIP服务的配置或许可问题,您可能会看到空数据 - 但您的问题中没有足够的信息让我对此说了很多。但是,正确配置该服务后,我之前遇到了类似的问题 - 所以这可能会有所帮助:
您没有指定您正在使用的Sitecore / DMS版本。但是在当天使用DMS for v6.5 / 6.6时,我遇到了GeoIP查找的一些问题,因为它们是异步执行的。
当DMS为访问创建新记录时,它将在后台触发GeoIP查找 - 与提供用户请求的页面并行。您不知道它何时会成功并返回数据,并且在发生这种情况之前,Tracker对象中的GeoIP属性无法正确填充。因此,如果您尝试在用户的前几页请求期间编写地理决策的代码,则可能无法正常工作。
我认为(虽然我没有对此进行测试)您可以使用Tracker.CurrentVisit.HasGeoIpData属性来测试异步查找是否已完成。
如果你有一个场景需要在用户第一次请求时知道GeoIP数据,那么我认为标准查找服务对你没用。您可以使用替代的内存工具。我想我公司上次需要做这样的事情时,我们根据这篇博文使用了一些自定义代码:http://sitecoresnippets.blogspot.co.uk/2011/12/sitecore-geoip-country-resolving-jump.html
您可以通过使用此方法来折衷速度的准确性。但另一方面,你不需要为每次查询付费......
答案 2 :(得分:0)
Maxmind通常在Sitecore.Analytics.config中配置 您可以测试以查看您的maxmind许可证是否返回有效值:
<setting name="MaxMind.Url" value="http://sitecore1.maxmind.com/app/sc?i={0}&l={1}" />
在浏览器中,从设置中获取url并输入有效的IP并添加许可证密钥(您可以在登录页面上获取密钥。然后附加MaxMind.SecurityToken中的值)。寻找返回值。有一定数量的免费请求,但之后您需要付费。
要查看的另一个项目是在标头中传递IP地址的位置(真实IP或X转发,具体取决于您的网络)。检查此值
<setting name="Analytics.ForwardedRequestHttpHeader" value="X-Forwarded-For" />
答案 3 :(得分:0)
您可以使用Sitecore.analytics.dll获取当前访问长度,请参阅下面的代码。
我正在使用它会给你正确的结果。
var currentLat=Sitecore.Analytics.Tracker.CurrentVisit.Latitude;
var currentLong=Sitecore.Analytics.Tracker.CurrentVisit.Longitude;
如果您的网站托管在本地系统上,那么它将为您提供零结果。请在服务器上托管网站然后尝试,它会给你正确的结果。