Ошибка системы событий с пользовательским интерфейсом 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 не принадлежат к тому же контексту публикации и поэтому недопустимы.

Другие вопросы по тегам