我想知道是否有人可以对此提供任何指导。我正在尝试从Tridion UGC Web服务返回ItemStats,但是尝试绑定(bind)结果时出现以下错误:-

封闭类型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);

我可以毫无问题地获得评论和评分。例如。
    var myComments = cds.Comments.Where(p => p.ItemId == 17805).OrderBy(p => p.CreationDate);

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

谢谢

约翰

最佳答案

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

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

  • 注意1:要从浏览器访问WebServer的元数据,可以转到/odata.svc/$metadata

    注意2:仔细观察一下,webService元数据中缺少2个属性:LastRatedDateLastCommentedDate

    希望这可以帮助。

    关于tridion - 从Tridion UGC返回ItemStats,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14606657/

    10-08 22:34