2015-04-08 2 views
3

Мы создали область, где клиент может управлять своим контентом на сайте, а не администратором, и по какой-то причине, когда мы создаем новый контент, кеш становится недействительным.Umbraco Создание контента с помощью кода вызывает недопустимость кеша

После создания содержимого, если вы перейдете к узлу администратора, вы увидите эту ошибку рядом с свойством «Ссылка на документ»: Упс: этот документ опубликован, но не находится в кеше (внутренняя ошибка).

Любые идеи, почему это может произойти? Есть ли способ проверить, находится ли элемент в кеше после его создания?

Это метод, который, как представляется, вызывает вопрос:

public static int GetOrCreateContentFolder(IContentService contentService, int userId, int parentId, string folderName, string contentTypeAlias) 
    { 
     var targetContentFolder = 
      contentService.GetChildren(parentId) 
      .Where(c => c.Name.ToLower() == folderName.ToLower()) 
      .ToList(); 

     if (targetContentFolder.Any()) 
     { 
      return targetContentFolder[0].Id; 
     } 

     var contentFolder = contentService.CreateContent(folderName, parentId, contentTypeAlias, userId); 
     return contentFolder.Id; 
    } 
+0

вы в условиях баланса нагрузки? И какая версия umbraco? –

+0

Это не баланс нагрузки, мы размещаем в Amazon на одной виртуальной машине, версия 7.1.4 –

+0

Обычно это происходит, когда несколько разработчиков имеют один и тот же umbraco db. Не могли бы вы показать код? И используете ли вы ContentService api? –

ответ

2

кажется, что вам нужно опубликовать свой новый узел под названием «contentFolder».

var contentFolder = contentService.CreateContent(folderName, parentId, contentTypeAlias, userId); 
contentService.SaveAndPublish(contentFolder); 

Используйте PublishWithChildren, если вам также необходимо опубликовать все дети.

Смотреть все методы в ContentService здесь: https://our.umbraco.org/documentation/Reference/Management-v6/Services/ContentService

+0

Хорошо, я обновил код, спасибо за помощь здесь. –

+0

Один вопрос, который у меня есть, почему эта ошибка появляется в админах возле свойства документа: К сожалению: этот документ опубликован, но не находится в кеше (внутренняя ошибка) –

+0

Прохладно это работало :) Umbraco хранит кешированную версию в папке App_data на диске. Когда узел задан как «опубликованный» в базе данных, но umbraco не может найти его в кеше .. эта ошибка возникает –