4

我们在发布页面事件时使用事件系统发布额外页面。当我们从 CME 发布页面时,它运行良好。当我们使用 Tridion UI 创建页面时,它会按预期创建和发布,但事件系统在尝试创建目标类型对象时会抛出错误。

 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都不是绝对不为空的,我们通过在那里写日志来验证。

请建议我们可以解决这个问题吗?

我们设法通过将代码放入 try catch 并在出现异常时手动创建目标类型来解决这个问题,因为我们知道 Tridion UI 仅在最初发布到暂存。

谢谢,维卡斯库马尔

4

2 回答 2

3

很难说没有异常和堆栈跟踪,但我假设您需要先阅读TargetType而不是尝试创建它,如下所示:

(TargetType) page.Session.GetObject(t.Id)
于 2013-01-24T10:13:17.097 回答
1

您使用的 URI 可能不是来自同一个发布上下文,因此是无效的。

于 2013-01-30T11:37:07.113 回答