Почему 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 с точки зрения полей или метаданных. Они также показывали предупреждение, что "Текущий элемент не имеет версии в "Английский английский".

Ответы на вопрос(2)

Ваш ответ на вопрос