3

我正在循环文件夹中的组件并根据其发布状态搜索一个组件,其 DateTime 类型的一个字段位于当前日期到下一个 7 天的范围内。

但是,如果检出任何组件,则 IsPublished 方法会引发异常InvalidUriException。如果我不想通过捕获异常并继续循环来跳过这个签出的组件,我该如何处理这种情况?

编辑: 第三行抛出InvalidUriException检出组件。

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 (item) 不存在。当一个组件被检出时,它可能会在 uri 中附加一个次要版本号,例如 tcm:xx-yy-yy-v1。所以你需要抓住它。

试试这个:打开检出组件的版本历史,看看最新版本的 ID 是什么。

于 2012-08-04T12:18:58.867 回答
2

查看您在组件本身中传递的代码,它不应该是 TcmUri 吗?硬编码 URI 时甚至会引发异常?

于 2012-08-04T14:30:10.203 回答
2

如果方法不支持版本 uri 或可编辑 uri,则会引发无效 uri 异常。使用无版本的uri,我认为它应该可以正常工作。你可以使用 TcmUri.GetVersionLess uri 方法。

于 2012-08-04T20:23:10.153 回答