【问题标题】:NullReferenceException when deleting a sitecore items children删除站点核心项目子项时出现 NullReferenceException
【发布时间】:2012-10-02 17:58:17
【问题描述】:

我正在尝试将一些旧的民意调查数据导入我们的 sitecore 解决方案。对于导入的一部分,我正在尝试创建新的站点核心项目来保存基于我们已经为民意调查设置的母版页的数据。这个主人在它下面设置了几个默认项目,我想在添加旧投票数据之前删除几个特定的​​默认项目。但是,当我尝试使用 item.DeleteChildren() 删除默认项目之一时,我在 sitecore 内核中得到了 Sitecore.Tasks.ItemEventHandler.OnItemDeleted(Object sender, EventArgs args) 抛出的 NullReferenceException。如果有人知道可能导致这种情况的原因,我将不胜感激。我们使用的是 sitecore 版本 5.3.2。

这里是我用来尝试基于母版创建/编辑项目的代码。创作一切都很完美,是 DeleteChildren() 调用不起作用。

   Guid LegacyPollFolderGuid = new Guid("8AE89A44-9DCD-4AC2-B0F3-DD438188A575");
   Guid QuizOMaticMasterGuid = new Guid("74B95ABF-1898-4870-8B4F-50AF0078AE22");

   var master = Sitecore.Configuration.Factory.GetDatabase("master");
   var root = master.GetItem(new Sitecore.Data.ID(LegacyPollFolderGuid));
   var quizMasterTemplate = master.Masters[new Sitecore.Data.ID(QuizOMaticMasterGuid)];

   var quizPage = root.Add("Test Quiz", quizMasterTemplate);
   if (quizPage != null)
   {
      var quiz = quizPage.Children["Column One"].Children["QuizOMatic"];
      if (quiz != null)
      {
         var questionFolder = quiz.Children["Questions"];
         var questionTemplate = questionFolder.Children[0].Template;
         var resultsFolder = quiz.Children["Results"];
         var linksFolder = quiz.Children["Links"];

         using (new Sitecore.SecurityModel.SecurityDisabler())
         {
            questionFolder.DeleteChildren();
         }
      }

【问题讨论】:

  • 你需要问题文件夹吗?有没有试过直接删。它会自动删除孩子。
  • 我没有尝试删除问题文件夹,因为我需要它。我尝试枚举问题文件夹子项并直接在每个子项上调用 item.Delete(),结果相同。
  • 这听起来像一个站点核心错误。我想知道是不是因为您刚刚创建了该项目并立即删除。只是为了证明这不是时间问题,您可以在调用 delete 之前退出 Thread.Sleep(2000) 看看它是否仍然会出错

标签: c# sitecore


【解决方案1】:

我已经构建了一个具有相同功能的工具;删除特定文件夹下的所有项目。我得到了同样的错误,但我看到项目被删除。所以我多次重新运行该工具,最终所有项目都被删除了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多