Подделка IP-адреса для проверки поиска GEOIP с помощью Sitecore 8

Я новичок в Sitecore. Я пытаюсь реализовать следующий класс процесса для перезаписи значений GeoIP в целях тестирования.

Я не могу найти, в каком пространстве имен находится класс Tracker. Обратите внимание, что я использую Sitecore 8, размещенный на локальном хосте. Блог Sitecore: блог @sitecorejohn

Может кто-нибудь, пожалуйста, помогите мне решить эту проблему с пространством имен.

Спасибо.

namespace Sitecore.Sharedsource.Analytics.Pipelines.StartTracking
{
    using System.Net;

    using Sitecore.Analytics;
    using Sitecore.Analytics.Pipelines.StartTracking;

    public class OverrideIPAddress
    {
        public void Process(StartTrackingArgs args)
        {
            if (Tracker.CurrentVisit == null
              || Tracker.CurrentVisit.GeoIp == null
              || Tracker.CurrentVisit.Ip == null)
            {
                return;
            }

            string ip = new IPAddress(
              Tracker.CurrentVisit.GeoIp.Ip).ToString();

            if (ip != "0.0.0.0" && ip != "127.0.0.1")
            {
                return;
            }

            string html = Sitecore.Web.WebUtil.ExecuteWebPage(
              "http://www.whatismyip.com/automation/n09230945.asp");
            IPAddress address = IPAddress.Parse(html);
            Tracker.CurrentVisit.GeoIp =
              Tracker.Visitor.DataContext.GetGeoIp(address.GetAddressBytes());
        }
    }
}

person Sutharshan Suthan    schedule 16.07.2015    source источник


Ответы (1)


Класс Tracker находится в пространстве имен Sitecore.Analytics.

Убедитесь, что ваш проект ссылается на Sitecore.Analytics.dll.

В Sitecore 8 следует использовать Tracker.Current и Tracker.Current.Interaction вместо Tracker.CurrentVisit:

Tracker.Current.Interaction.Ip = address.GetAddressBytes();
Tracker.Current.Interaction.UpdateGeoIpData(optionalTimeout);

Вы можете добавить еще один процессор в конвейер CreateVisit после процессора XForwardedFor и вызвать:

args.Interaction.Ip = address.GetAddressBytes();

Вам не придется вызывать UpdateGeoIpData — он будет вызван автоматически в процессоре UpdateGeoIpData.

person Marek Musielak    schedule 16.07.2015
comment
Спасибо за Ваш ответ. Могу ли я узнать, как должна выглядеть эта строка кода в Sitecore 8? Tracker.CurrentVisit.GeoIp = Tracker.Visitor.DataContext.GetGeoIp(address.GetAddressBytes()); - person Sutharshan Suthan; 16.07.2015
comment
Эта строка должна быть заменена двумя строками, которые включены в конец моего ответа: сначала вы устанавливаете IP-адрес в байтах адреса из IP-адреса, а затем выполняете UpdateGeoIpData с необязательным тайм-аутом (как долго вы хотите ждать асинхронного Звоните, чтобы закончить). - person Marek Musielak; 16.07.2015
comment
Ценю твою помощь. Большое спасибо. - person Sutharshan Suthan; 17.07.2015
comment
Привет, @MarekMusielak, Если мы добавляем ваш процессор сразу после существующего процессора InitializeTracker в конвейере startTracking, определенном в файле Sitecore.Analytics.Tracking.config, тогда вам нужно обновить GeoipData, поскольку вы включили его в последнюю строку кода. Спасибо - person Mahendra Shekhawat; 17.07.2015
comment
Вам следует подумать о добавлении еще одного процессора в конвейер CreateVisit после XForwardedFor процессора и установить args.Interaction.Ip = address.GetAddressBytes(); — вам не придется вызывать UpdateGeoIpData - person Marek Musielak; 17.07.2015