Элементы недействительны в Sitecore 6

Иногда Sitecore не возвращает определенные элементы. Например, в следующем коде:

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

Это вернет ноль, однако, если тот же строковый идентификатор будет помещен в поиск над деревом контента в редакторе контента, он вернет элемент! База данных контекста находится в Интернете, и я несколько раз переиздавал этот элемент.

Я использую Sitecore 6.2.0 (версия 100701).


person lurscher    schedule 07.12.2010    source источник
comment
Я откатил вопрос, так как он был обновлен, чтобы отразить ответ, поэтому больше не имеет смысла.   -  person Adam Hopkinson    schedule 29.09.2011


Ответы (3)


Вы уверены, что это не опечатка? Я имею в виду, разве вы не должны передавать itemId вместо id только GetItem?

Я точно не помню, как это работает, но если вы передаете строку этому методу, он, вероятно, рассматривает ее как путь, а не идентификатор, и пытается разрешить элемент по пути. Вы можете проверить это намного быстрее, чем я:

Sitecore.Data.ID itemId = new Sitecore.Data.ID(id);
Sitecore.Context.Database.GetItem(itemId);
person Yan Sklyarenko    schedule 07.12.2010
comment
да, я уверен, извините за мою ошибку из-за поспешной вставки копии, я использую некоторую служебную функцию: } - person lurscher; 07.12.2010
comment
Возможно, товара до сих пор нет в веб-базе? Возможно, у него есть ограничения на публикацию или он не прошел рабочий процесс... Попробуйте просто выбрать * из элементов, где ID = 'YOUR-GUID-HERE' против веб-базы данных, чтобы убедиться - person Yan Sklyarenko; 07.12.2010
comment
хорошо, я выяснил, в чем причина... кажется, что sitecore не любит, когда контекстный пользователь sitecore является экстранетом/анонимным. Я захожу как обычный пользователь и все работает... - person lurscher; 08.12.2010
comment
Это потому, что у extranet\anonymous нет доступа для чтения к этому самому элементу. Хорошо, что это решено сейчас - person Yan Sklyarenko; 08.12.2010

У меня была такая же проблема - функция GetItem() возвращает NULL

Потянув меня за волосы около часа, я обнаружил, что моя функция GetItem() вызывается внешним интерфейсом, а пользователь extranet/Anonymous не имеет доступа для чтения к элементу, который я пытаюсь получить.

Так что не забудьте проверить безопасность!

person csuwannarat    schedule 28.09.2011

обратитесь к следующей статье. http://sdn.sitecore.net/Articles/API/Context%20and%20databases.aspx

в web.config узел site name="website" может указывать на неправильную базу данных. Свойство базы данных должно быть «мастер» или «веб».

person Annadurai    schedule 13.05.2014