Почему Sitecore публикует черновые элементы из API C #, и как мне это остановить?
я запускаю запланированную публикацию моей главной базы данных Sitecore с помощью API публикации Sitecore. В течение дня я звоню через веб-службу, которая запускает следующий код (слегка сжатый для удобства чтения):
// grab the root content node from sitecore
Item contentNode = dbSource.Items[ID.Parse("{0DE95AE4-41AB-4D01-9EB0-67441B7C2450}")];
PublishOptions options = new PublishOptions(sourceDatabase, targetDatabase, PublishMode.Smart, lang, DateTime.Now);
options.RootItem = contentNode;
options.Deep = true;
Publisher p = new Publisher(options);
p.PublishAsync();
Когда мы запускаем приведенный выше код, он публикует все в узле контента, включая всех потомков, независимо от состояния рабочего процесса. Это'Как будто он полностью игнорирует рабочий процесс. Это не то, к чему мы стремимся, а вызывает много проблем на нашем сайте.
Если мы запустим одно и то же действие из Sitecore Desktop, оно публикует все в узле контента, включая всех потомков, которыеопубликованию (Т.е. на заключительном этапе рабочего процесса).Он не публикует никаких элементов в дереве, которые все еще находятся в черновом режиме. Это обязательное поведение.
Я попытался реализовать код как пользователь без прав администратора, окружив приведенный выше код следующим оператором using:
string userName = @"sitecore\******";
Sitecore.Security.Accounts.User user = Sitecore.Security.Accounts.User.FromName(userName, true);
user.RuntimeSettings.IsAdministrator = false;
using (new Sitecore.Security.Accounts.UserSwitcher(user))
{
...
}
К сожалению, это не имело никакого эффекта.
Есть ли что-то очевидное, что япропустил, или я делаю это правильно, а Sitecore делает это неправильно? Может кто-нибудь помочь, пожалуйста?
Странная вещь, которую я также заметил, заключается в том, что опубликованные черновики элементов при просмотре в оперативной базе данных абсолютно ничего не отображали в Sitecore Desktop с точки зрения полей или метаданных. Они также показывали предупреждение, что "Текущий элемент не имеет версии в "Английский английский".