6

我想知道是否有人可以对此提供任何指示。我正在尝试从 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);

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

    var myComments = cds.Comments.Where(p => p.ItemId == 17805).OrderBy(p => p.CreationDate);

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

谢谢

约翰

4

1 回答 1

8

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

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

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

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

希望这可以帮助。

于 2013-01-30T15:14:15.103 回答