【发布时间】:2012-04-17 19:06:45
【问题描述】:
我有这段代码,我用它来发布到网络数据库。我遇到了一个问题,当我使用下面的代码发布时,我的 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);
}
【问题讨论】:
-
您能否确认该项目所基于的模板存在于“网络”数据库中?
-
是的,模板存在。此问题不会出现在每个项目的每次发布中。它只发生在某些项目上。
-
如果您从 Sitecore(而不是代码)手动发布,是否也会出现这种情况?
-
不,手动发布工作正常,没有任何问题。
-
当我进入网络数据库并从演示选项卡中点击“重置”时,项目变得一切正常