jjzjj

mongodb - xDB 不存储任何交互

coder 2023-10-28 原文

更新:所以问题是我的应用程序 Global.asax.cs 不是从 Sitecore.Web.Application 派生的。

所以我刚刚安装了带有 MongoDB 2.6.11 的 Sitecore 8。

出于测试目的,我将下面的代码放在页面加载事件中以激活我之前在 sitecore 中创建的目标。

目标已通过部署和发布成功创建。我还确认了目标的项目 ID 是正确的。

    if (Sitecore.Analytics.Tracker.IsActive && Sitecore.Analytics.Tracker.Current.CurrentPage != null)
    {
       Sitecore.Data.Items.Item GoaltoTrigger = Sitecore.Context.Database.GetItem("{EDA8EA2C-7AF5-4D0F-AF76-A9C4E6BD7169}");
       if (GoaltoTrigger != null)
       {
           Sitecore.Analytics.Data.Items.PageEventItem registerthegoal = new Sitecore.Analytics.Data.Items.PageEventItem(GoaltoTrigger);
           Sitecore.Analytics.Model.PageEventData eventData = Sitecore.Analytics.Tracker.Current.CurrentPage.Register(registerthegoal);
           eventData.Data = GoaltoTrigger["Description"];
           Sitecore.Analytics.Tracker.Current.Interaction.AcceptModifications();
       }
    }
    Session.Abandon();

遗憾的是,这没有用,我在 xDB 的交互下看不到目标。

我调查过的其他事情是我的布局肯定有标签

<sc:VisitorIdentification runat="server" />

我的 Global.asax 实现了 Sitecore.Web.Application

public class Global : Sitecore.Web.Application

但没有运气。在 Mongo 中看不到交互(使用 mongo shell 和 roboMongo 来查找集合)。我还缺少其他东西吗?

Sitecore 错误

ManagedPoolThread #3 16:43:00 INFO  Job ended: Sitecore.ListManagement.Analytics.UnlockContactListsAgent (units processed: )
12980 16:43:05 INFO  Cache created: '[no name]' (max size: 976KB, running total: 2918MB)
12980 16:43:05 INFO  Cache created: '[no name]' (max size: 976KB, running total: 2919MB)
12980 16:43:05 INFO  Cache created: '[no name]' (max size: 976KB, running total: 2920MB)
12980 16:43:05 INFO  Cache created: '[no name]' (max size: 976KB, running total: 2921MB)
12980 16:43:05 INFO  Cache created: '[no name]' (max size: 976KB, running total: 2922MB)
ManagedPoolThread #5 16:43:06 ERROR Failed to perform MaxMind lookup
ManagedPoolThread #5 16:43:06 ERROR Failed to perform GeoIp lookup for 127.0.0.1
Exception: Sitecore.Analytics.Lookups.CannotParseResponseException
Message: Unexpected format. Cannot parse the MaxMind response for IP address: 127.0.0.1

Source: Sitecore.Analytics
   at Sitecore.Analytics.Lookups.MaxMindProvider.GetInformationByIp(String ip)
   at Sitecore.Analytics.Lookups.GeoIpManager.GetDataFromLookupProvider(GeoIpHandle geoIpHandle)

12980 16:43:08 INFO  Cache created: 'WebUtil.QueryStringCache' (max size: 19KB, running total: 2922MB)
2700 16:43:08 INFO  HttpModule is being initialized
12360 16:43:08 INFO  HttpModule is being initialized
7068 16:43:08 INFO  HttpModule is being initialized
9940 16:43:10 INFO  [Experience Analytics]: Reduce agent found zero segments to process
ManagedPoolThread #1 16:43:10 INFO  Job started: Sitecore.ListManagement.Analytics.UnlockContactListsAgent
ManagedPoolThread #1 16:43:10 INFO  Job ended: Sitecore.ListManagement.Analytics.UnlockContactListsAgent (units processed: )

最佳答案

触发目标

首先,这是触发目标的正确方法:

if (Sitecore.Analytics.Tracker.IsActive)
{
    if (Sitecore.Analytics.Tracker.Current.CurrentPage != null)
    {
        var goalId = new Sitecore.Data.ID("{EDA8EA2C-7AF5-4D0F-AF76-A9C4E6BD7169}");

        Sitecore.Analytics.Data.Items.PageEventItem goalToTrigger =
            Sitecore.Analytics.Tracker.DefinitionItems.PageEvents[goalId];

        if (goalToTrigger != null)
        {
            Sitecore.Analytics.Model.PageEventData eventData =
                Sitecore.Analytics.Tracker.Current.CurrentPage.Register(goalToTrigger);
        }
        else
        {
            Sitecore.Diagnostics.Log.Error("Goal with ID " + goalId + " does not exist", this);
        }
    }
    else
    {
        Sitecore.Diagnostics.Log.Error("Tracker.Current.CurrentPage is null", this);
    }
}
else
{
    Sitecore.Diagnostics.Log.Warn("The tracker is not active. Unable to register the goal.", this);
}

您不应在注册后尝试更改事件数据。

此外,您不应该调用 Interaction.AcceptModifications() ,因为这种方法是 xDB 在某些时候内部使用的东西。

CurrentPage.Register()是您唯一需要做的事情。

结束 session

我不推荐使用 Session.Abandon() .它可能会导致将您的交互保存到收集数据库中,但这样您会破坏 Sitecore session 的正常流程。这可能导致的问题之一是交互的联系人将保持锁定状态 21 分钟(或任何您的 session 超时设置为 + 1 分钟)。

相反,出于测试目的,我建议您将 session 超时设置为 1 分钟,并在您最后一次页面请求后等待 1 分钟。此设置作为 <sessionState> 的属性位于 Web.config 中.

解决交互保存问题

  1. 确保 analytics连接字符串设置正确。
  2. 确保您拥有 xDB 的许可证。您可以在 Sitecore 控制面板 –> 管理 –> 已安装的许可证中查看可用许可证列表。
    a) 在 Sitecore 8.0 或更低版本中,许可证名称为 Sitecore.OMS .
    b) 在 Sitecore 8.1 中它是 Sitecore.xDB.base .
  3. 确保 xDB 及其跟踪子系统已启用。
    a) 在 Sitecore 8.0 或更低版本中,Analytics.Enabled应设置为 trueSitecore.Analytics.config 中。
    b) 在 Sitecore 8.1 中,Xdb.EnabledXdb.Tracking.Enabled应设置为 trueSitecore.Xdb.config 中。
  4. 还应在网站定义上启用跟踪。
    a) 在 Sitecore 8.0 或更低版本中,转到 <sites> Web.config 部分并检查 enableAnalytics 设置为 false<site name="website">或者您正在使用的任何网站。
    b) 在 Sitecore 8.1 中,您应该确保 enableTracking设置为 trueSitecore.config 中为您的站点设置。
  5. 尝试在让 session 过期之前发出多个页面请求,而不是一个。
  6. 尝试通过设置 Analytics.Robots.IgnoreRobots 来禁用机器人检测和 Analytics.AutoDetectBotsfalseSitecore.Analytics.Tracking.config 中。如果此后互动得以保存,我将更新我的答案并提供进一步的说明。
  7. 如果没有任何帮助,请执行文章 Troubleshooting xDB data issues 中列出的步骤.

关于mongodb - xDB 不存储任何交互,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34083886/

有关mongodb - xDB 不存储任何交互的更多相关文章

  1. ruby - 如何将脚本文件的末尾读取为数据文件(Perl 或任何其他语言) - 2

    我正在寻找执行以下操作的正确语法(在Perl、Shell或Ruby中):#variabletoaccessthedatalinesappendedasafileEND_OF_SCRIPT_MARKERrawdatastartshereanditcontinues. 最佳答案 Perl用__DATA__做这个:#!/usr/bin/perlusestrict;usewarnings;while(){print;}__DATA__Texttoprintgoeshere 关于ruby-如何将脚

  2. ruby - 解析 RDFa、微数据等的最佳方式是什么,使用统一的模式/词汇(例如 schema.org)存储和显示信息 - 2

    我主要使用Ruby来执行此操作,但到目前为止我的攻击计划如下:使用gemsrdf、rdf-rdfa和rdf-microdata或mida来解析给定任何URI的数据。我认为最好映射到像schema.org这样的统一模式,例如使用这个yaml文件,它试图描述数据词汇表和opengraph到schema.org之间的转换:#SchemaXtoschema.orgconversion#data-vocabularyDV:name:namestreet-address:streetAddressregion:addressRegionlocality:addressLocalityphoto:i

  3. ruby-on-rails - 如何在 ruby​​ 交互式 shell 中有多行? - 2

    这可能是个愚蠢的问题。但是,我是一个新手......你怎么能在交互式ruby​​shell中有多行代码?好像你只能有一条长线。按回车键运行代码。无论如何我可以在不运行代码的情况下跳到下一行吗?再次抱歉,如果这是一个愚蠢的问题。谢谢。 最佳答案 这是一个例子:2.1.2:053>a=1=>12.1.2:054>b=2=>22.1.2:055>a+b=>32.1.2:056>ifa>b#Thecode‘if..."startsthedefinitionoftheconditionalstatement.2.1.2:057?>puts"f

  4. ruby-on-rails - link_to 不显示任何 rails - 2

    我试图在索引页中创建一个超链接,但它没有显示,也没有给出任何错误。这是我的index.html.erb代码。ListingarticlesTitleTextssss我检查了我的路线,我认为它们也没有问题。PrefixVerbURIPatternController#Actionwelcome_indexGET/welcome/index(.:format)welcome#indexarticlesGET/articles(.:format)articles#indexPOST/articles(.:format)articles#createnew_articleGET/article

  5. ruby-on-rails - RSpec:避免使用允许接收的任何实例 - 2

    我正在处理旧代码的一部分。beforedoallow_any_instance_of(SportRateManager).toreceive(:create).and_return(true)endRubocop错误如下:Avoidstubbingusing'allow_any_instance_of'我读到了RuboCop::RSpec:AnyInstance我试着像下面那样改变它。由此beforedoallow_any_instance_of(SportRateManager).toreceive(:create).and_return(true)end对此:let(:sport_

  6. ruby - Rack:如何将 URL 存储为变量? - 2

    我正在编写一个简单的静态Rack应用程序。查看下面的config.ru代码:useRack::Static,:urls=>["/elements","/img","/pages","/users","/css","/js"],:root=>"archive"map'/'dorunProc.new{|env|[200,{'Content-Type'=>'text/html','Cache-Control'=>'public,max-age=6400'},File.open('archive/splash.html',File::RDONLY)]}endmap'/pages/search.

  7. ruby-on-rails - 为什么在 Rails 5.1.1 中删除了 session 存储初始化程序 - 2

    我去了这个website查看Rails5.0.0和Rails5.1.1之间的区别为什么5.1.1不再包含:config/initializers/session_store.rb?谢谢 最佳答案 这是删除它的提交:Setupdefaultsessionstoreinternally,nolongerthroughanapplicationinitializer总而言之,新应用没有该初始化器,session存储默认设置为cookie存储。即与在该初始值设定项的生成版本中指定的值相同。 关于

  8. ruby-on-rails - 尝试设置 Amazon 的 S3 存储桶 : 403 Forbidden error & setting permissions - 2

    我正在关注Hartl的railstutorial.org并已到达11.4.4:Imageuploadinproduction.我做了什么:注册亚马逊网络服务在AmazonIdentityandAccessManagement中,我创建了一个用户。用户创建成功。在AmazonS3中,我创建了一个新存储桶。设置新存储桶的权限:权限:本教程指示“授予上一步创建的用户读写权限”。但是,在存储桶的“权限”下,未提及新用户名。我只能在每个人、经过身份验证的用户、日志传送、我和亚马逊似乎根据我的名字+数字创建的用户名之间进行选择。我已经通过选择经过身份验证的用户并选中了上传/删除和查看权限的框(而不

  9. ruby - 如何打印出 Mechanized 存储的 cookie? - 2

    我正在使用mechanize登录网站,然后检索页面。我遇到了一些问题,我怀疑这是由于cookie中的某些值造成的。当Mechanize登录网站时,我假设它存储了cookie。如何通过Mechanize打印出存储在cookie中的所有数据? 最佳答案 代理有一个cookie方法。agent=Mechanize.newpage=agent.get("http://www.google.com/")agent.cookiesagent.cookies.to_scookie返回一个Mechanize::Cookiesobject

  10. ruby-on-rails - 闪存消息存储在哪里? - 2

    我以为它们存储在cookie中-但不,检查cookie没有任何结果。session也不存储它们。那么,我在哪里可以找到它们?我需要这个来直接设置它们(而不是通过flashhash)。 最佳答案 它们存储在inyoursessionstore.自rails2.0以来的默认设置是cookie存储,但请检查config/initializers/session_store.rb以检查您是否使用默认设置以外的东西。 关于ruby-on-rails-闪存消息存储在哪里?,我们在StackOverf

随机推荐