Почему 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, оно публикует все в узле контента, включая всех потомков, которыеpublishable (Т.е. на заключительном этапе рабочего процесса).It does not publish any items in the tree that are still in draft mode. This is the required bahaviour.

Я попытался реализовать код как пользователь без прав администратора, окружив приведенный выше код следующим оператором 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)

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