2012-05-08 6 views
6

Ho generato un riferimento di servizio in Visual Studio su CD OData webservice su SDL Tridion 2011 SP1 e tutto sembra funzionare correttamente, ma quando richiedo un componente specifico con codice come questo: eccezioneIl componente di tipo chiuso non ha una proprietà impostabile IsMultimedia corrispondente

ContentDeliveryService cdService1 = new ContentDeliveryService(new Uri("http://xxx:81/odata.svc")); 
var item = cdService1.Components.Where(p => p.ItemId == 29 && p.PublicationId == 1).First(); 
Console.WriteLine(item.ItemId); 

si sta gettando:

The closed type ConsoleApplication1.CdService.Component does not have a corresponding IsMultimedia settable property. 

qualcuno sa hot fix questo?

risposta

7

Presumo il problema è che il server ti invia una proprietà di cui il client non conosce (la proprietà IsMultimedia). È possibile confermare questo utilizzando ad esempio Fiddler per vedere la risposta dal server. Potrebbe accadere se il tipo di componente sul server è contrassegnato come aperto (può avere più proprietà di quelle dichiarate). La libreria client non supporta i tipi aperti direttamente oggi.

Se non è necessaria la proprietà IsMultimedia sul client, è possibile eliminare questo errore impostando cdService1.IgnoreMissingProperties = true.

Se è necessaria la proprietà IsMultimedia sul client, la classe Component generata per l'utente deve essere una classe parziale, quindi è possibile aggiungere manualmente la proprietà IsMultimedia. Allora dovrebbe anche funzionare.

3

Questo sembra essere un difetto che verrà risolto nella prossima versione. Impostazione IgnoreMissingProperties opere, l'altra soluzione è quella di aprire Reference.cs file di questo riferimento e cambiare public global::System.Nullable<bool> Multimedia proprietà IsMultimedia

+0

ho avuto simili errori quando si gioca in giro con la versione pre-release del 2011 GA ... –

Problemi correlati