调用ISessionAwareCoreService.GetList()时出现“意外的列表类型”异常

时间:2012-05-01 13:24:30

标签: tridion

我通过发货的客户端程序集调用Tridion 2011 SP1核心服务。当我尝试列出出版物的内容时,我得到一个例外。

代码(简化)如下所示:

ItemsFilterData filter = new Tridion.ContentManager.CoreService
                     .Client.RepositoryItemsFilterData.RepositoryItemsFilterData();
filter.ItemTypes = new ItemType[] { 
    ItemType.Folder, 
    ItemType.StructureGroup 
};
filter.Recursive = false;                        

IEnumerable<IdentifiableObjectData> childItems = core.GetList("tcm:0-15-1", filter);

注意:变量“core”指的是我可以成功调用的ISessionAwareCoreService,例如core.GetSystemWideList()

当调用.GetList时,我得到以下异常:

System.ServiceModel.FaultException`1 was unhandled
  Message=Unexpected list type: 
     Tridion.ContentManager.Data.ContentManagement.RepositoryItemsFilterData.

这个问题的可能原因是什么?你能否提出一个很好的通用方法来解释这种信息?

1 个答案:

答案 0 :(得分:11)

您无法使用Publication获得GetList的直接子女。相反,您应该只使用PublicationData加载client.Read,然后访问RootFolderRootStructureGroup

PublicationData pub = (PublicationData)core.Read("tcm:0-1-1", new ReadOptions());
string rootFolder = pub.RootFolder.IdRef;
string rootSG = pub.RootStructureGroup.IdRef;

或者,您可以使用GetListXml致电RepositoryItemsFilterData,然后自行从XML中提取项目。

XElement listResult = core.GetListXml(parent.ID, filter);