0

Datacontract 属性と Datamember 属性を使用して、単純な DTO を定義しました。すべてのデータメンバーは整数です。私はうまくいったリストを返していました。しかし今、リストを圧縮してバイト配列として返しています。私のサービスはインターフェイスの一部として DTO を返さなくなったので、サービス参照でクラスを生成しません。クライアント側で作業するタイプがないため、解凍できません。

Visual Studio を使用してサービス参照を生成しています。

すべての例は、クラスがそのプロパティの 1 つとして別のクラスを持つ既知の型を公開することに関するものです。したがって、型を宣言してから既知の型を宣言するか、継承などを使用しています。型を宣言したいだけです。

私は多くのことを試しました

<dataContractSerializer>
  <declaredTypes>
    <add type="PGF.Business.CustomerCropYearDTO, PGF_ExternalService">
    </add>
  </declaredTypes>
</dataContractSerializer>

クラスの短縮バージョンを次に示します。

<DataContract()>
Public Class CustomerCropYearDTO

    <DataMember()> Public Property CustomerCropYearId As Integer
End Class

私は VB で作業していますが、C# の回答で問題ありません。

4

1 に答える 1

0

うーん..私がよく理解している場合、バイナリを含めるようにDTOを変更し、サービスが呼び出される前にオブジェクトのインスタンス化中に圧縮を処理しようとしています。私は正しいですか?

Gzip 圧縮は、メッセージ レベルで処理できます。(バイト配列ではなく) "実際のプロパティ" を使用してデータ コントラクトを維持し、Gzip 圧縮を使用してカスタム バインドを作成することができます。こちらに適切な WCF サンプルがあります(「WCF/Extensibility/MessageEncoder/Compression/CS」に移動します)。

于 2013-08-19T22:53:19.590 に答える