1

以下のコードを使用して、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);
}
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 に答える