Tridion 2011 に特定の条件が存在する場合、公開を停止したいと思います。Razor テンプレートで次のことを試します。
throw new Exception("Exceptional condition!");
しかし、Template Builder では「成功」と表示されます。
何か案は?
VBScript テンプレートで Err.Raise を実行すると、エラーがパブリッシュ キューにスローされます。
Tridion 2011 に特定の条件が存在する場合、公開を停止したいと思います。Razor テンプレートで次のことを試します。
throw new Exception("Exceptional condition!");
しかし、Template Builder では「成功」と表示されます。
何か案は?
VBScript テンプレートで Err.Raise を実行すると、エラーがパブリッシュ キューにスローされます。
ベースの Razor Mediator コードには try/catch メカニズムはまったくなく、テンプレートのエラーが表面化するはずです (一般的な null 参照エラーでわかるように、おそらくそれを剃っているときに多くのエラーが発生するでしょう!)。必ず確認する必要があることがいくつかあります。
例外のあるコード パスは実行されていますか? Bart が提案したように、Template Builder を介して実行し、そこに有用なログがあるかどうかを確認する必要があります。独自のデバッグ ステートメントも投入して、コード パスの行先を特定します。
あなたの例外は、正しくフォーマットされたかみそりステートメントにありますか?
新しい CT の場合、ページ テンプレートのコードは CT のレンダリングを許可しますか?
サンプルの TBB を次のようにセットアップしました (そして TBB をコンポーネント テンプレートに追加しました)。
<div>Testing an Error</div>
@{ throw new Exception("Exceptional condition"); }
Template Builder を実行すると、出力ウィンドウにエラーが表示されました。CT を使用してコンポーネントを含むページをプレビューすると失敗し、エラーが表示されます。ページを公開すると、ステータスとして「失敗」と表示され、処理済みアイテムの詳細には「例外的な状態です!」と表示されます。メッセージ。
それでも問題が解決しない場合は、お気軽にコードを投稿してください。さらにデバッグします。
Razor Mediator が例外をキャッチし、再スローしていないように思えます。しかし、コードをざっと見ても、それがどこで発生するかを直接示すことはできませんでした。
そこにはかなりの数の try、catch ブロックがあり (いくつかはおそらく正しく、期待されています)、ほとんどは警告をログに記録しています。
テンプレート ビルダーのログに興味深いものはありますか? そうでない場合は、テンプレートの実行中に Razor Mediator コードを読み込んでデバッグし、例外をキャッチするものを確認し、それを簡単に変更できるかどうかを確認します (オープン ソースであることは良いことです)。