我正在循环文件夹中的组件,并根据其发布状态搜索其Datefield类型的一个字段位于当前日期范围内的组件到接下来的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);
答案 0 :(得分:4)
无效的uri异常意味着tcm id(item)不存在。当检出组件时,它可以在uri上附加次要版本号,例如中医认为:XX-YY-YY-V1。所以你需要抓住它。
试试这个:打开签出组件的版本历史记录,看看最新版本的ID是什么。
答案 1 :(得分:2)
查看您传递给组件本身的代码,不应该是TcmUri吗? 当您对URI进行硬编码时,甚至会抛出异常?
答案 2 :(得分:2)
如果方法不支持版本uri或可编辑的uri,则抛出无效的uri异常。使用无版本的uri然后它应该工作正常我认为。你可以使用TcmUri.GetVersionLess uri方法。