Невозможно получить правильные широту/язык и IP-адрес в Sitecore с помощью Maxmind

Мне нужна помощь, чтобы получить широту/язык текущих пользователей в SiteCore с помощью службы Maxmin. Я пытаюсь с конфигурацией по умолчанию и с доступными бесплатными поисками. Я использую API ниже, чтобы получить результат. Tracker.CurrentVisit.Latitude Tracker.CurrentVisit.Longitude

Но это дает мне ценность zeero.

На самом деле, когда я пытаюсь получить IP-адрес с помощью Tracker.CurrentVisit.Ip, я получаю частный IP-адрес, но не общедоступный IP-адрес. Я развернул свое решение на тестовом сервере и получил доступ к локальной машине. У меня сейчас нет лицензии, но насколько я понял, есть некоторые бесплатные поиски, доступные изначально для нескольких посещений. Также, когда я попытался использовать Tracker.CurrentVisit.GeoIp.Ip, это не удалось, потому что GeoIp имеет значение null.

В чем разница между Tracker.CurrentVisit.GeoIp.Ip и Tracker.CurrentVisit.Ip? Пожалуйста, дайте мне знать, если у кого-нибудь есть какие-либо предложения

-Спасибо, Шарат.


person Sharath    schedule 29.04.2014    source источник
comment
Если сервер увидит ваш частный сетевой IP, Maxmind не сможет предоставить никакой информации. Для тестирования можно модифицировать кешированные данные goe в базе данных аналитики. Посмотрите в столбце Кэшировано из таблицы GeoIps.   -  person herskinduk    schedule 29.04.2014


Ответы (4)


Прошло некоторое время, но я считаю, что веб-служба не бесплатна. Бесплатная версия представляет собой базу данных (CSV-файл), которую вы используете локально. Дополнительную информацию можно найти здесь: http://dev.maxmind.com/geoip/geoip2/downloadable/#MaxMind_APIs

person chad    schedule 29.04.2014
comment
Спасибо, Чад. Я думаю, вы правы. Я получаю ,,,,,,,,,,LICENSE_EXPIRED для значения по умолчанию. Мне нужно проверить после покупки лицензии - person Sharath; 02.05.2014

Глядя на код для Sitecore.Analytics.dll через ILSpy, Tracker.CurrentVisit.Ip возвращает свойство IP в строке данных аналитики для текущего сеанса. Я подозреваю, что это массив байтов, взятый из данных HTTP-запроса. Tracker.CurrentVisit.GeoIp возвращает строку базы данных аналитики для поиска GeoIP для текущего сеанса. Это объект типа VisitorDataSet.GeoIpsRow.

Возможно, вы видите пустые данные из-за проблем с конфигурацией или лицензированием службы GeoIP, но в вашем вопросе недостаточно информации, чтобы я мог об этом сказать. Однако при правильной настройке этой службы у меня уже была потенциально похожая проблема, так что, возможно, это поможет:

Вы не указываете, с какой версией Sitecore/DMS вы работаете. Но когда-то с DMS для v6.5/6.6 я столкнулся с некоторыми проблемами с поиском GeoIP, потому что они выполнялись асинхронно.

Когда DMS создает новую запись для посещения, она инициирует поиск GeoIP в фоновом режиме — параллельно с обслуживанием страниц, запрашиваемых пользователем. Вы не знаете, когда он завершится успешно и вернет данные, и свойства GeoIP в объекте Tracker не будут правильно заполнены, пока это не произойдет. Поэтому, если вы пытаетесь написать код, в котором вы принимаете географические решения во время первых нескольких запросов пользователя на страницу, они могут работать неправильно.

Я думаю (хотя я не проверял это), что вы можете использовать свойство Tracker.CurrentVisit.HasGeoIpData, чтобы проверить, завершен ли асинхронный поиск.

Если у вас есть сценарий, когда вам нужно знать данные GeoIP во время первого запроса пользователя, то я не думаю, что стандартный сервис поиска будет вам полезен. Вместо этого вы можете использовать альтернативный инструмент в памяти. Я думаю, что в последний раз, когда моей компании нужно было сделать что-то подобное, мы использовали некоторый собственный код, основанный на этом сообщении в блоге: http://sitecoresnippets.blogspot.co.uk/2011/12/sitecore-geoip.-country-resolving-jump.html

Тем не менее, используя этот подход, вы жертвуете точностью ради скорости. Но с другой стороны, вы не платите за каждый поиск...

person JermDavis    schedule 29.04.2014
comment
Спасибо JermDavis за предоставленную информацию. Я использую Sitecore 6.5. Я не знаю, как проверить версию DMS. думаю, проблема в том, что у меня нет необходимой лицензии для использования службы Maxmind. Получит лицензию и снова протестирует. - person Sharath; 02.05.2014

Maxmind обычно настраивается в Sitecore.Analytics.config. Вы можете проверить, возвращает ли ваша лицензия maxmind допустимое значение:

<setting name="MaxMind.Url" value="http://sitecore1.maxmind.com/app/sc?i={0}&amp;l={1}" />

В браузере возьмите URL-адрес из настройки, введите действительный IP-адрес и добавьте лицензионный ключ (вы можете получить ключ на странице входа в систему. Затем добавьте значение из MaxMind.SecurityToken). Найдите возвращаемое значение. Есть определенное количество бесплатных запросов, но после этого вам нужно будет заплатить.

Еще один момент, на который следует обратить внимание, — это то, где в заголовках передается IP-адрес (реальный IP-адрес или X-forwarded, в зависимости от вашей сети). Проверьте это значение

 <setting name="Analytics.ForwardedRequestHttpHeader" value="X-Forwarded-For" />
person jmoynihan    schedule 30.04.2014
comment
Спасибо, jmoynihan, за предоставленную информацию. Я проверил URL-адрес с моим идентификатором лицензии и токеном безопасности Maxmind по умолчанию (00000000), он вернул ,,,,,,,,,,LICENSE_EXPIRED. Поэтому я думаю, что мне нужно получить необходимую лицензию и снова протестировать эту службу геолокации. - person Sharath; 02.05.2014

Вы можете использовать Sitecore.analytics.dll, чтобы получить информацию о текущем посещении в течение долгого времени, см. код ниже.

Я использую это, это даст вам правильный результат.

var currentLat=Sitecore.Analytics.Tracker.CurrentVisit.Latitude;
var currentLong=Sitecore.Analytics.Tracker.CurrentVisit.Longitude;

Если ваш сайт размещен в вашей локальной системе, это даст вам нулевой результат. Пожалуйста, разместите сайт на сервере, затем попробуйте, это даст вам правильный результат.

person Yogesh Sharma    schedule 11.06.2014