闭合类型Component没有相应的IsMultimedia可设置属性

时间:2012-05-08 08:20:35

标签: tridion tridion-content-delivery

我已经在Visual Studio中为SDL Tridion 2011 SP1上的CD OData webservice生成了一个服务引用,一切似乎都运行良好,但当我请求具有以下代码的特定组件时:

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.

有人知道热修复吗?

2 个答案:

答案 0 :(得分:7)

我认为问题是服务器向您发送客户端不知道的属性(IsMultimedia属性)。您可以通过使用例如Fiddler来查看服务器的响应来确认这一点。如果服务器上的Component类型标记为open(可以具有比声明的属性更多的属性),则可能会发生这种情况。客户端库今天不直接支持开放类型。

如果您不需要客户端上的IsMultimedia属性,则可以通过设置cdService1.IgnoreMissingProperties = true来抑制此错误。

如果您确实需要客户端上的IsMultimedia属性,则为您生成的Component类应该是一个分部类,因此您可以手动将属性IsMultimedia添加到它。那它也应该有效。

答案 1 :(得分:3)

这似乎是一个缺陷,将在下一个版本中修复。 设置IgnoreMissingProperties有效,另一种解决方案是打开此引用的Reference.cs文件,并将public global::System.Nullable<bool> Multimedia属性更改为IsMultimedia