Мы используем Sitecore 8 в нашем проекте, который имеет два разных сайта.
При попытке получить домашний элемент для одного из этих сайтов, кажется ненадежным:
var database = Factory.GetDatabase("Web");
var homeItem = database.GetItem(new ID("{FAF3904C-4BE4-ED80-891A-DFEE0A4C18C5}"));
Когда сайт только что был перезапущен в IIS или когда кэш Sitecore очищен, иногда переменная homeItem имеет значение null.
Кажется, что объект базы данных предоставляет элементы для одного сайта («текущий»)."сайт, соответствующий нашему URL-адресу запроса), но он не предоставляет элементы для другого сайта.
При последующих запросах для другого сайта кажется, что элементы для обоих сайтов доступны.И иногда, даже после перезапуска IIS или очистки кэша Sitecore все элементы легко доступны с самого начала.(Я не нашел несколько шагов, которые последовательно воспроизводят проблему.)
Я предполагаю, что где-то происходит кэширование (возможно, вне кэша Sitecore), но я понятия не имею, что именноэто может быть.
Кто-нибудь знает, почему database.GetItem может иногда возвращать ноль для элементов, которые существуют, но могут принадлежать другому сайту, чем текущий?И что еще более важно: как я могу получить элементы из базы данных с гарантией доступности элементов со всех сайтов?