2010-12-07 7 views
5

Sitecoreは特定のアイテムを返さないことがあります。たとえば、次のコードで:Sitecore 6でアイテムがヌルです

Sitecore.Data.ID itemId = new Sitecore.Data.ID(id); 
Sitecore.Context.Database.GetItem(id); 

これは、同じ文字列IDがコンテンツエディタでコンテンツツリー上の検索に置かれている場合しかし、それはアイテムを返します、nullを返します!コンテキストデータベースはwebであり、アイテムを何度も再公開しました。

私はSitecore 6.2.0(改訂100701)を使用しています。

+0

答えを反映するように更新されたので、私は質問を巻き戻しました。 –

答えて

5

あなたは誤植ではありませんか?つまり、idからGetItemの代わりにitemIdを渡すべきではありませんか?

私はそれがどのように動作するのか覚えていませんが、このメソッドに文字列を渡すと、IDではなくパスとして扱われ、パスで項目を解決しようとします。あなたは私よりも、このはるかに高速を確認することができます。

Sitecore.Data.ID itemId = new Sitecore.Data.ID(id); 
Sitecore.Context.Database.GetItem(itemId); 
+0

ええ、私は間違いなく、間違ったコピー貼り付けのためにいくつかのユーティリティ関数を使用して私のミス:public static Sitecore.Data.Items.Item GetItemById(Sitecore.Data.ID id) { 返すSitecore.Context.Database.GetItem( id); } – lurscher

+0

おそらく、アイテムはまだWebデータベースにありませんか?それは、制限を公開しているか、ワークフローを通過していない可能性があります... IDを確認するために、Web DBに対してID = 'YOUR-GUID-HERE'のアイテムから単純な「select *」を試してください。 –

+1

コンテキストのsitecoreユーザーがエクストラネット/匿名のときにsitecoreが好きではないようです。私は通常のユーザーとしてログインし、それは動作します... – lurscher

5

は、私はちょうど同じ問題を持っていた - NULL

時間ほど私の髪を引っ張った後、私は私のGetItem()機能がによって呼び出されることがわかった関数が返すGetItem()フロントエンドとextranet/Anonymousユーザーには、取得しようとしているアイテムへの読み取りアクセス権がありません。

だから、セキュリティをチェックしてください!

関連する問題