6

Tridion 2011 に特定の条件が存在する場合、公開を停止したいと思います。Razor テンプレートで次のことを試します。

throw new Exception("Exceptional condition!");

しかし、Template Builder では「成功」と表示されます。

何か案は?

VBScript テンプレートで Err.Raise を実行すると、エラーがパブリッシュ キューにスローされます。

4

2 に答える 2

9

ベースの Razor Mediator コードには try/catch メカニズムはまったくなく、テンプレートのエラーが表面化するはずです (一般的な null 参照エラーでわかるように、おそらくそれを剃っているときに多くのエラーが発生するでしょう!)。必ず確認する必要があることがいくつかあります。

  1. 例外のあるコード パスは実行されていますか? Bart が提案したように、Template Builder を介して実行し、そこに有用なログがあるかどうかを確認する必要があります。独自のデバッグ ステートメントも投入して、コード パスの行先を特定します。

  2. あなたの例外は、正しくフォーマットされたかみそりステートメントにありますか?

  3. 新しい CT の場合、ページ テンプレートのコードは CT のレンダリングを許可しますか?

サンプルの TBB を次のようにセットアップしました (そして TBB をコンポーネント テンプレートに追加しました)。

<div>Testing an Error</div>
@{ throw new Exception("Exceptional condition"); }

Template Builder を実行すると、出力ウィンドウにエラーが表示されました。CT を使用してコンポーネントを含むページをプレビューすると失敗し、エラーが表示されます。ページを公開すると、ステータスとして「失敗」と表示され、処理済みアイテムの詳細には「例外的な状態です!」と表示されます。メッセージ。

それでも問題が解決しない場合は、お気軽にコードを投稿してください。さらにデバッグします。

于 2012-12-14T14:25:28.547 に答える
8

Razor Mediator が例外をキャッチし、再スローしていないように思えます。しかし、コードをざっと見ても、それがどこで発生するかを直接示すことはできませんでした。

そこにはかなりの数の try、catch ブロックがあり (いくつかはおそらく正しく、期待されています)、ほとんどは警告をログに記録しています。

テンプレート ビルダーのログに興味深いものはありますか? そうでない場合は、テンプレートの実行中に Razor Mediator コードを読み込んでデバッグし、例外をキャッチするものを確認し、それを簡単に変更できるかどうかを確認します (オープン ソースであることは良いことです)。

于 2012-12-14T11:56:59.413 に答える