6

Visual Studio で SDL Tridion 2011 SP1 の CD OData Web サービスへのサービス参照を生成しましたが、すべて正常に動作しているように見えますが、特定のコンポーネントを次のようなコードで要求すると、次のようになります。

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.

誰もがこれをホットフィックス知っていますか?

4

2 に答える 2

7

問題は、サーバーがクライアントが知らないプロパティ(IsMultimediaプロパティ)を送信することだと思います。これは、たとえばFiddlerを使用してサーバーからの応答を確認することで確認できます。サーバー上のコンポーネントタイプがオープンとしてマークされている場合に発生する可能性があります(宣言されているプロパティよりも多くのプロパティを持つことができます)。現在、クライアントライブラリはオープンタイプを直接サポートしていません。

クライアントにIsMultimediaプロパティが必要ない場合は、cdService1.IgnoreMissingProperties=trueを設定することでこのエラーを抑制できます。

クライアントでIsMultimediaプロパティが必要な場合は、生成されるComponentクラスは部分クラスである必要があるため、プロパティIsMultimediaを手動で追加できます。その後、それも機能するはずです。

于 2012-05-08T08:36:55.980 に答える
3

これは、次のバージョンで修正される不具合のようです。設定は機能します。他の解決策は、この参照のファイルIgnoreMissingPropertiesを開き、プロパティを次のように変更することですReference.cspublic global::System.Nullable<bool> MultimediaIsMultimedia

于 2012-05-08T08:42:46.860 に答える