2012-05-01 10 views
5

Sto richiamando il servizio principale Tridion 2011 SP1 tramite l'assembly client spedito. Quando tento di elencare il contenuto di una pubblicazione, ottengo un'eccezione.Eccezione "Tipo di elenco imprevisto" durante il richiamo di ISessionAwareCoreService.GetList()

Il codice (semplificato) aspetto:

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 variabile "core" si riferisce ad un ISessionAwareCoreService che posso usare con successo per chiamare, ad esempio core.GetSystemWideList()

Quando viene richiamata .GetList, viene visualizzata la seguente eccezione:

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

Quali sono le possibili cause di questo problema? Puoi suggerire un buon approccio generale per interpretare questo tipo di messaggio?

risposta

11

Non è possibile ottenere i figli diretti di Publication utilizzando GetList. Invece dovresti semplicemente caricare il PublicationData con un client.Read e quindi accedere a RootFolder e RootStructureGroup su quello.

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

In alternativa è possibile chiamare GetListXml con il vostro RepositoryItemsFilterData ed estrarre gli elementi dal XML da soli.

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