2012-05-01 12 views
5

Invoco el servicio central de Tridion 2011 SP1 a través del ensamblado de cliente enviado. Cuando intento listar el contenido de una publicación, recibo una excepción.Excepción de "tipo de lista inesperada" al invocar ISessionAwareCoreService.GetList()

El código (simplificado) tiene el siguiente aspecto:

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); 

Nota: la variable "núcleo" se refiere a un ISessionAwareCoreService que puedo utilizar con éxito para llamar, por ejemplo core.GetSystemWideList()

cuando se invoca .GetList, me sale el siguiente excepción:

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

¿Cuáles son las posibles causas de este problema? ¿Puedes sugerir un buen enfoque general para interpretar este tipo de mensaje?

Respuesta

11

No puede obtener los hijos directos de Publication usando GetList. En su lugar, solo debe cargar el PublicationData con un client.Read y luego acceder al RootFolder y RootStructureGroup en eso.

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

alternativa, se puede llamar con su GetListXmlRepositoryItemsFilterData y extraer los elementos del XML sí mismo.

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