Sitecore 8(修订版 150121)、分析 (MongoDB)、错误 "There is no row at position 0."

Sitecore 8 (revision 150121), Analytics (MongoDB), Error "There is no row at position 0."

您好。我在 Sitecore 8 Analytics 中的问题 - 当我在 'EXPERIANCE PROFILE' 中查看非匿名用户的选项卡 'PROFILE' 和 'OVERVIEW' 时,错误 'There is no row at position 0.'。

此错误也存在于 Sitecore 8 的更新中。导致此错误的原因是什么?

因此,此问题是由 Sitecore 开发人员错误调用的。

分析了 "FindBestPatternMatchAndApplyToProfileInfo" class 的代码及其方法后,我发现空数组 (属性 "Rows" in a " dataTable”对象),取自元素。这导致超出范围异常。


可以通过实施您自己的 class(FindBestPatternMatchAndApplyToProfileInfo 的副本)并添加 "if"-statement 来检查 "Rows" 来解决此问题] 字段:

private bool ApplyPatternToOneProfile(ReportProcessorArgs args, DataRow profileRow)
    {
        bool flag = true;
        if (DataRowExtensions.Field<Guid>(profileRow, Sitecore.Cintel.Reporting.Contact.ProfileInfo.Schema.ProfileId.Name) == Guid.Empty)
            flag = false;
        ViewParameters retrievingBestPattern = CustomProcessorViewPatternProfile.GetParametersForRetrievingBestPattern(args, profileRow);
        DataTable dataTable = CustomerIntelligenceManager.ViewProvider.GenerateContactView(retrievingBestPattern).Data.Dataset[retrievingBestPattern.ViewName];
        if (dataTable.Rows != null && dataTable.Rows.Count != 0)
        {
            if (!this.TryFillData<Guid>(profileRow, Sitecore.Cintel.Reporting.Contact.ProfileInfo.Schema.BestMatchedPatternId, dataTable.Rows[0], Sitecore.Cintel.Reporting.Contact.ProfilePatternMatch.Schema.PatternId.Name) || !this.TryFillData<string>(profileRow, Sitecore.Cintel.Reporting.Contact.ProfileInfo.Schema.BestMatchedPatternDisplayName, dataTable.Rows[0], Sitecore.Cintel.Reporting.Contact.ProfilePatternMatch.Schema.PatternDisplayName.Name) || !this.TryFillData<double>(profileRow, Sitecore.Cintel.Reporting.Contact.ProfileInfo.Schema.BestMatchedPatternGravityShare, dataTable.Rows[0], Sitecore.Cintel.Reporting.Contact.ProfilePatternMatch.Schema.PatternGravityShare.Name))
                flag = false;
        }
        else
        {
            flag = false;
        }

        return flag;
    } 

更新:

或者,您可以通过在 Sitecore 营销控制面板 中添加至少一张模式卡来解决此问题,以获取相应的配置文件。(https://developers.coveo.com/display/public/SC201503/Understanding+Profiles+and+Pattern+Cards;jsessionid=D03AC5B4F9F4B4E588538BC977BE2F6D)