1

我在下面有这段代码,我用它来发布到 Web 数据库。我遇到了一个问题,当我使用下面的代码发布时,我的 Web 数据库中有一个损坏的项目,当我单击它时,会出现错误“值不能为空”。参数名称“项目”。当我查看该项目时,它的图标是标准模板与具有自定义图标的自定义模板的图标。但是当我单击它时,我看到了所有字段以及上述错误。

是否有一个与 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);
}
4

1 回答 1

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();

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

数据库清理

您可以尝试数据库清理并删除旧字段作为开始,如果仍然导致问题您应该查看数据库级别的值字段并比较“错误”发布和正确发布上的字段值。

于 2012-04-19T08:09:42.847 回答