3

フォルダー内のコンポーネントをループし、DateTime 型の 1 つのフィールドが現在の日付から次の 7 日間の範囲内にあるコンポーネントを、その公開ステータスに基づいて検索しています。

ただし、いずれかのコンポーネントがチェックアウトされている場合、IsPublished メソッドは例外をスローしますInvalidUriException。例外をキャッチしてループを続行することで、このチェックアウトされたコンポーネントをスキップしたくない場合、この状況をどのように処理できますか?

編集:InvalidUriException 3 行目は、チェックアウトされたコンポーネントを スローします。

componentUri = new TcmUri(node.Attributes[CommonConstants.Id].Value).GetVersionlessUri();
dummyComponent = engine.GetObject(componentUri) as Component;
bool isPublished = PublishEngine.IsPublished(dummyComponent , publicationTarget);
4

3 に答える 3

4

無効な uri 例外は、tcm id (アイテム) が存在しないことを意味します。コンポーネントがチェックアウトされると、URI にマイナー バージョン番号が追加される場合があります (例: tcm:xx-yy-yy-v1)。だからあなたはそれをつかむ必要があります。

これを試してください: チェックアウトしたコンポーネントのバージョン履歴を開き、最新バージョンの ID を確認してください。

于 2012-08-04T12:18:58.867 に答える
2

メソッドがバージョン URI または編集可能な URI をサポートしていない場合、無効な URI 例外がスローされます。バージョンレスURIを使用すると、うまくいくはずです。TcmUri.GetVersionLess uri メソッドを使用できます。

于 2012-08-04T20:23:10.153 に答える
2

コンポーネント自体に渡すコードを見ると、それは TcmUri ではないでしょうか? URI をハードコーディングしても例外がスローされますか?

于 2012-08-04T14:30:10.203 に答える