2012-05-08 9 views
6

Wygenerowałem odwołanie do usługi w programie Visual Studio do usługi CD OData w usłudze SDL Tridion 2011 SP1 i wszystko wydaje się działać poprawnie, ale gdy żądam określonego komponentu z kodem takim jak to:Komponent typu zamkniętego nie ma odpowiadającej właściwości ustawialnej IsMultimedia.

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

to rzuca wyjątek:

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

Czy ktoś wie ciepłej rozwiązać ten problem?

Odpowiedz

7

Zakładam, że problem polega na tym, że serwer wysyła właściwość, o której klient nie wie (właściwość IsMultimedia). Możesz to potwierdzić, używając np. Skrzypka, aby zobaczyć odpowiedź z serwera. Może się tak zdarzyć, jeśli typ komponentu na serwerze jest oznaczony jako otwarty (może mieć więcej właściwości niż zadeklarowane). Biblioteka klienta nie obsługuje dzisiaj typów otwartych bezpośrednio.

Jeśli nie potrzebujesz właściwości IsMultimedia na kliencie, możesz pominąć ten błąd, ustawiając cdService1.IgnoreMissingProperties = true.

Jeśli potrzebna jest właściwość IsMultimedia na kliencie, wygenerowana klasa Component powinna być klasą częściową, więc można ręcznie dodać do niej właściwość IsMultimedia. To też powinno działać.

3

Wygląda na to, że jest to usterka, która zostanie naprawiona w następnej wersji. Ustawianie IgnoreMissingProperties prace, drugi rozwiązaniem jest otwarcie tego pliku Reference.cs odniesienia i zmienić public global::System.Nullable<bool> Multimedia właściwość IsMultimedia

+0

miałem podobne błędy podczas gry z wersji pre-release 2011 roku GA ... –

Powiązane problemy