1

インストールで非常に奇妙なエラーが発生しています。どこからともなく、Sitecore がエラーをスローすることがあります:

Assert: Value Cannot be null. Parameter: Item. 

問題を特定するのに最も近いのは、インデックスまたは Web データベースのいずれかに絞り込むことです。

とにかく、sitecore にログインするとアイテムが見つからないだけで、次の 3 つの方法で修正できます。

  • インデックスを再構築します。
  • アプリ プールのリサイクル
  • iisreset

なぜこれが起こっているのか考えている人はいますか?Sitecore.NET 6.5.0 (rev. 120706) を実行しています。どんな助けでも大歓迎です。

4

2 に答える 2

4

あなたはシステムの安定性の問題を説明しているので、Sitecore サポート ( http://support.sitecore.net )でチケットを開くことをお勧めします。この種の問題は、ログや構成にアクセスできないため、スタック オーバーフローではトラブルシューティングが困難です。

チケットを開くときは、Sitecore サポートが問題のトラブルシューティングに必要とするすべての情報 (Web.config、App_Config ファイル、IIS 設定、Sitecore ログ ファイル) をまとめたSupport Package Generatorを使用することをお勧めします。かなりナイスなツールです。

とはいえ、あなたの説明から、問題はキャッシングに関連しているように思えます。IIS を再起動すると問題が解決するという事実は、項目が Web データベースにあることを示していますが、ランタイムはそれを認識していません。/sitecore/admin/cache.aspx 画面を使用してキャッシュをクリアすることで、これが問題であるかどうかを証明できます。キャッシュが適切に更新されていない場合は、SDNスケーリング ガイドのガイドラインに照らして構成を確認する必要があります。

于 2012-11-19T18:04:54.157 に答える
2

Advanced Database Crawler を使用していることに基づいて、問題は を に変換する方法にある可能性がありSkinnyItemますItem。私は以前にこの問題を抱えていました。SkinnyItem.cs クラスを見ると、それを .csGetItem()に変換するメソッドがありますItem。データベースを使用して、ID、言語、およびバージョン番号で項目を取得していることがわかります。マスターから Web に発行する場合、既存のアイテムの新しいバージョン # を発行しているため、新しいバージョンが Web DB に存在する可能性がありますが、インデックスは更新されず、古いバージョンを参照しています。したがって、このGetItem()呼び出しは以前のバージョンを使用し # 、アイテムは null になります。これを修正する 1 つの方法は、そのGetItem()メソッドを呼び出す代わりに、独自のコードを使用して Sitecore からそのアイテムの最新バージョンを取得することです。

Item item = Sitecore.Context.Database.GetItem(someSkinnyItem.ItemID);

それ以外の

Item item = someSkinnyItem.GetItem();

フローの例を次に示します。

  • バージョン 1 としてマスター DB に作成された Foo アイテム。
  • Foo を Web に公開する
  • Index は Web DB でバージョン 1 を取得し、index に入れます。
  • インデックスに対してクエリを実行するコードは、そのメソッドを介して をに変換SkinnyItemし、バージョン # として 1 を渡します。ItemGetItem()
  • ページが読み込まれます。ログにエラーはありません
  • マスターに戻り、バージョン 2 の Foo を作成して公開します。
  • インデックスはすぐには更新されないか、構成が間違っていても更新されない場合があります。
  • インデックスを参照するコードはGetItem()、インデックスにあるため、バージョン 1 で呼び出します。
  • しかし、公開すると、web にはバージョン 1 がなくなり、バージョン 2 になったため、そのアイテム Foo の特定のバージョンは null になります。
  • ログにエラーが表示される

同様に、Alex Shyba (ADC の作成者) によるブログ投稿で、HTML キャッシュのクリアとインデックスの更新を同期する方法について説明しています。それは役立つかもしれません。

于 2012-11-20T18:00:14.030 に答える