日志中的异常:分析根项目应该存在于数据库中。资料来源:Sitecore.Marketing

Exception in log: Analytics root item should exist in the database. Source: Sitecore.Marketing

将 6.5 Sitecore 解决方案升级到 8.1 后,从干净的 8.1 数据库开始并从旧解决方案迁移项目,我在日志中收到异常,抱怨 Analytics 根项目丢失。在 Sitecore 和营销中心检查过,8.1 特定项目存在。任何导致此异常的线索? 提前致谢!

消息:分析根项目应该存在于数据库中

来源:Sitecore.Marketing 在 Sitecore.Marketing.Definitions.Outcomes.Data.ItemDb.ItemOutcomeDefinitionRepository..ctor(字符串数据库名称,布尔值 assumeActive,IDefinitionRecordMapper`1 映射器) 在 Sitecore.Marketing.Definitions.Outcomes.Data.ItemDb.ItemOutcomeDefinitionRepository..ctor(String databaseName, Boolean assumeActive)

此错误来自:

  public ItemOutcomeDefinitionRepository(string databaseName, bool assumeActive, IDefinitionRecordMapper<OutcomeDefinitionRecord> mapper)
  : base(Assert.ResultNotNull<Database>(Database.GetDatabase(databaseName), "database not found " + databaseName), ItemOutcomeDefinitionRepository.OutcomeTemplateId, ItemOutcomeDefinitionRepository.OutcomeContainerId, assumeActive, mapper)
{
  Assert.ArgumentNotNull((object) databaseName, "databaseName");
  Assert.ArgumentNotNull((object) mapper, "mapper");
  this.itemDb = Assert.ResultNotNull<Database>(Database.GetDatabase(databaseName), "database not found " + databaseName);
  Assert.IsNotNull((object) this.itemDb, "item database '{0}' should be available", (object) databaseName);
  Assert.IsNotNull((object) this.itemDb.GetItem(ItemOutcomeDefinitionRepository.OutcomeContainerId), "analytics root item should exist in the database");
}

此行抛出异常:

 Assert.IsNotNull((object) this.itemDb.GetItem(ItemOutcomeDefinitionRepository.OutcomeContainerId), "analytics root item should exist in the database");

您需要检查您是否有 ID 为:

的项目
 private static readonly ID OutcomeContainerId = Sitecore.Marketing.Definitions.Outcomes.WellKnownIdentifiers.MarketingCenterOutcomeContainerId;
  public static readonly ID MarketingCenterOutcomeContainerId = ID.Parse("{062A1E69-0BF6-4D6D-AC4F-C11D0F7DC1E1}");

具有以上 id 的项目是具有路径的项目:

/sitecore/system/Marketing Control Panel/Outcomes