我们在发布页面事件时使用事件系统发布额外页面。当我们从 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 仅在最初发布到暂存。
谢谢,维卡斯库马尔