Ошибка системы событий с пользовательским интерфейсом Tridion (Experience Manager)
Мы публикуем дополнительную страницу, используя систему событий для публикации событий страниц. Это хорошо работает, когда мы публикуем страницу из CME. Когда мы создаем страницу с использованием пользовательского интерфейса Tridion, она создается и публикуется, как и ожидалось, но система событий выдает ошибку при попытке создать объект целевого типа.
try
{
foreach (var t in e.Targets)
{
var targets = new List<TargetType>();
some logic
targets.Add(new TargetType(t.Id, page.Session)); // error is in this line
PublishInstructionBase pib = e.PublishTransactions.First().Instruction;
PublishInstruction pi = new PublishInstruction(page.Session);
pi.StartAt = pib.StartAt;
pi.RollbackOnFailure = pib.RollbackOnFailure;
PublishEngine.Publish(
items,
pi,
targets,
PublishPriority.Low
);
}
}
Исключение, которое мы получаем, - InvalidURIException
И t, и Session не являются определенно не нулевыми, что мы проверили, написав там log.
Пожалуйста, предложите, что мы можем исправить?
Нам удалось это исправить путем небольшого взлома, помещая код в try catch и создавая целевой тип вручную, если есть исключение, поскольку мы знаем, что пользовательский интерфейс Tridion публикуется в промежуточной стадии только на начальном этапе.
Спасибо, Викас Кумар
2 ответа
Трудно сказать без исключения и трассировки стека, но я предполагаю, что вам нужно прочитать TargetType
сначала и не пытайтесь его создать, вот так:
(TargetType) page.Session.GetObject(t.Id)
Возможно, что используемые вами URI не принадлежат к тому же контексту публикации и поэтому недопустимы.