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

残念ながら、ItemsStats に関して、UGC WebService のメタデータは正しくありません。これは、Web サービスのメタデータが、ItemStat エンティティにLastRatedDateプロパティが含まれているという事実を公開していないことを意味します。これにより、.NET プロキシがこのプロパティを認識できなくなり、クエリが失敗します。この問題を回避するには、次の 2 つのオプションがあります。

  1. サービスに次のプロパティを追加します: cds.IgnoreMissingProperties = true;. このアプローチの利点は、2 秒で完了することです。欠点は、そのプロパティにアクセスできないことです (実際に使用する場合)。
  2. Visual Studio によって生成されたプロキシを変更し、そのプロパティを手動で ItemStat クラスに追加します。このアプローチの利点は、プロジェクトからプロパティにアクセスできることです。欠点は、コーディングの観点からは完全に管理できないことです。プロキシをアップグレードまたは再生成するときは注意する必要があり、プロパティを手動で追加するときに間違いを犯しやすいです。

注 1: ブラウザから webServer のメタデータにアクセスするには、/odata.svc/$metadata.

注 2: よく見ると、webService メタデータから欠落している 2 つのプロパティがあります:LastRatedDateLastCommentedDate.

お役に立てれば。

于 2013-01-30T15:14:15.103 に答える