Sitecore Publish会创建损坏的项目

时间:2012-04-17 19:06:45

标签: sitecore publish

我在下面有这段代码用于发布到网络数据库。我有一个问题,当我使用下面的代码发布时,我在Web数据库中有一个损坏的项目,当我点击时给我错误'值不能为空。参数名称'item''。当我查看项目时,它的图标是标准模板与自定义模板的图标,后者具有自定义图标。但是当我点击它时,我看到了所有字段以及上面提到的错误。

是否可能存在与Web数据库中已发布项目同名的项目?

using (new SecurityDisabler())
{
    Sitecore.Data.Database master = Sitecore.Configuration.Factory.GetDatabase("master");
    Sitecore.Data.Database target = Sitecore.Configuration.Factory.GetDatabase("web");
    Sitecore.Data.Items.Item home = master.GetItem(new ID(id));
    Sitecore.Data.Database[] targetDatabases = { target };
    Sitecore.Globalization.Language[] languages = master.Languages;
    bool deep = false;
    bool compareRevisions = true;
    Sitecore.Publishing.PublishManager.PublishItem(home, targetDatabases, languages, deep, compareRevisions);
}

1 个答案:

答案 0 :(得分:1)

如果与您在

中发布的上下文相关

异步发布

您可以尝试异步运行发布作业。 然后通过Sitecore作业完成发布。

using Sitecore.Publishing;
PublishOptions publishOptions = new PublishOptions(item.Database, Database.GetDatabase("web"), PublishMode.SingleItem, item.Language, DateTime.Now) { Deep = deep, RootItem = item };

Publisher p = new Publisher(publishOptions);
p.PublishAsync();

如果这没有任何区别,则可能与项目值表中剩余的无效字段值有关。

数据库清理

您可以尝试数据库清理并删除旧字段以便启动并且仍然会导致问题您应该查看数据库级别中的值字段,并比较“错误”发布和正确发布的字段值。