从Tridion UGC返回ItemStats

Joh*_*ohn 6 ugc tridion tridion-content-delivery tridion-2011

我想知道是否有人可以提供任何指针.我正在尝试从Tridion UGC Web服务返回ItemStats但是在尝试绑定结果时遇到以下错误: -

闭合类型TridionWebUGC.CDS.ItemStat没有相应的LastRatedDate可设置属性.

代码示例如下: -

WebServiceClient ugcCall2 = new WebServiceClient();
    Uri uri = new Uri("http://new.ugc.service/odata.svc");
    CDS.ContentDeliveryService cds = new CDS.ContentDeliveryService(uri);

var myItemStats = cds.ItemStats.Where(p => p.PublicationId == 68 && p.Id == 17792 && p.Type==16);
Run Code Online (Sandbox Code Playgroud)

我可以毫无问题地获得评论和评分.例如

    var myComments = cds.Comments.Where(p => p.ItemId == 17805).OrderBy(p => p.CreationDate);
Run Code Online (Sandbox Code Playgroud)

这只是ItemStats给我一个问题.有人有什么想法吗?

谢谢

约翰

Dan*_*agu 8

不幸的是,关于ItemsStats,UGC WebService的元数据不正确.对您而言,这意味着Web服务元数据不会暴露ItemStat实体包含该LastRatedDate属性的事实.这使您的.NET代理不会意识到此属性并使您的查询失败.要解决此缺陷,您有两种选择:

  1. 将以下属性添加到您的服务中:cds.IgnoreMissingProperties = true; 这种方法的优点是你在2秒内完成了它.缺点是您将无法访问该属性(如果您实际使用它);
  2. 修改Visual Studio生成的代理,并手动将该属性添加到ItemStat类.这种方法的优点是您可以从项目中访问该属性.缺点是从编码的角度来看它完全不可管理,在升级或重新生成代理时需要小心,并且在手动添加属性时很容易出错.

注意1:从您可以访问的浏览器访问您的webServer的元数据/odata.svc/$metadata.

注意2:仔细看看webService元数据中缺少2个属性:LastRatedDateLastCommentedDate.

希望这可以帮助.