使用例外停止Tridion发布

rob*_*rtc 6 tridion

我想在Tridion 2011中存在特定条件时停止发布.在Razor模板中,我尝试:

throw new Exception("Exceptional condition!");
Run Code Online (Sandbox Code Playgroud)

但是,在Template Builder中它表示"成功".

有任何想法吗?

在VBScript模板中,我们会执行Err.Raise,它会将错误返回到Publish Queue.

Ale*_*ock 9

这里绝对不是在基本剃刀中保代码,在模板中的错误应该表面的任何try/catch语句的机制(如你与你可能碰到了很多东西,razoring起来共同空引用的错误吧!).你应该检查一些事情:

  1. 是否执行异常的代码路径?正如Bart建议的那样,您应该通过Template Builder运行它,看看那里是否有任何有用的日志.抛出自己的调试语句以及找到代码路径的位置.

  2. 您的Exception是否在格式正确的剃刀声明中?

  3. 如果它是一个新的CT,页面模板的代码是否允许渲染你的CT?

我只是按如下方式设置了样本TBB(并将TBB添加到组件模板中):

<div>Testing an Error</div>
@{ throw new Exception("Exceptional condition"); }
Run Code Online (Sandbox Code Playgroud)

通过Template Builder运行在"输出"窗口中显示错误.使用CT预览包含组件的页面将失败并显示错误.发布页面显示"失败"状态,处理过的项目详细显示"异常情况!" 信息.

希望有所帮助,如果您仍然遇到问题,请随时发布您的代码,我会进一步调试!


Bar*_*man 8

对我来说听起来就像Razor Mediator正在捕捉你的异常而不是重新抛出它.但是快速查看代码并没有直接表明会发生什么.

有很多尝试,在那里捕获块(有些可能正确和预期),大多数是记录警告.

你在模板构建器日志中得到了什么有趣的东西吗?如果不是,我会尝试加载Razor Mediator代码并在运行模板时对其进行调试,以查看捕获异常的内容以及是否可以轻松更改(好东西是开源代码).