Sitecore发布创建损坏的项目

Sitecore发布创建损坏的项目,sitecore,publish,Sitecore,Publish,我有一段代码,下面是我用来发布到web数据库的代码。我遇到了一个问题,当我使用下面的代码发布时,我在web数据库中有一个损坏的项目,当我单击该项目时,错误值不能为null。参数名称“项”。当我查看该项目时,它的图标是标准模板与具有自定义图标的自定义模板的图标。但是当我点击它时,我看到了所有的字段和上面提到的错误 在web数据库中有一个与已发布项目同名的项目会是一个问题吗 using (new SecurityDisabler()) { Sitecore.Data.Database mas

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

在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);
}
如果与要发布的上下文相关

异步发布 您可以尝试异步运行发布作业。 然后通过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();
如果这没有任何区别,则可能与items values表中留下的无效字段值有关

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

如果与您发布的上下文相关

异步发布 您可以尝试异步运行发布作业。 然后通过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();
如果这没有任何区别,则可能与items values表中留下的无效字段值有关

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

能否确认“web”数据库中存在项目所基于的模板?是,模板存在。并非每个项目的每次发布都会出现此问题。这种情况仅发生在某些项目上。如果您从Sitecore手动发布它(而不是从代码发布),是否也会发生这种情况?否,手动发布工作正常,没有任何问题。当我进入web数据库并从“演示文稿”选项卡中单击“重置”时,该项目将变为所有项目。您能否确认该项目所基于的模板是否存在于“web”数据库中?是的,该模板存在。并非每个项目的每次发布都会出现此问题。这种情况只发生在某些项目上。如果您从Sitecore(而不是代码)手动发布它,是否也会发生?不,手动发布工作正常,没有任何问题。当我进入web数据库并从“演示文稿”选项卡中单击“重设”时,该项目会变得正常