3

WCF サービスを使用して GZip ファイルをアップロードしようとしています。Gzipを使用してファイルを圧縮し、それをWCFサービスに渡してサーバーにアップロードしようとしています。コードを実行するたびに、このエラー メッセージが表示されます

'System.IO.Compression.GZipStream' をシリアル化できません。これを DataContractAttribute 属性でマークし、シリアル化するすべてのメンバーを DataMemberAttribute 属性でマークすることを検討してください。

このプロパティ メンバーを とマークしました[DataMember]。私はまた、正直である必要のない[DataContract]追加を行っています。[Serialiable]

誰でも助けることができますか?

4

1 に答える 1

0

これが適切な方法かどうかはわかりませんが、うまくいきました。

1) データ転送オブジェクト クラスを作成する

[DataContract]
class ZippedDataDTO
{
    [DataMember]
    public byte[] RawData {get;set;}

    //other relevant metadata
}

2) データが圧縮されたら、ストリームからバイトを取得します。.ToArray()

3) 圧縮された raw バイトを DTO に割り当てますRawBytes

4) この DTO を WCF サービス契約の一部として返却します。

[ServiceContract]
interface IService
{
    [OperationContract]
    ZippedDataDTO GetZippedData();  
    ...
}
于 2011-09-06T13:32:10.950 に答える