2012-05-08 3 views
6

Я создал служебную ссылку в Visual Studio на CD OData webservice на SDL Tridion 2011 SP1, и все, кажется, работает нормально, но когда я запрашиваю конкретный компонент с кодом, например это:Компонент закрытого типа не имеет соответствующего свойства свойства 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); 

Он бросает исключение:

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

кто-нибудь знает исправление этого?

ответ

7

Я предполагаю, что проблема заключается в том, что сервер отправляет вам свойство, о котором клиент не знает (свойство IsMultimedia). Вы можете подтвердить это, используя, например, Fiddler, чтобы увидеть ответ с сервера. Это может произойти, если тип компонента на сервере отмечен как открытый (может иметь больше свойств, чем объявлено). В настоящее время клиентская библиотека не поддерживает открытые типы.

Если вам не нужно свойство IsMultimedia на клиенте, вы можете подавить эту ошибку, установив cdService1.IgnoreMissingProperties = true.

Если вам нужно свойство IsMultimedia на клиенте, класс Component, сгенерированный для вас, должен быть частичным классом, поэтому вы можете добавить его свойство IsMultimedia вручную. Тогда это также должно работать.

3

Это, кажется, дефект, который будет исправлен в следующей версии. Установка IgnoreMissingProperties работы, другое решение открыть Reference.cs файл этой ссылки и изменить public global::System.Nullable<bool> Multimedia свойства IsMultimedia

+0

я имел аналогичные ошибки при игре вокруг с предварительной версией 2011 GA ... –

Смежные вопросы