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)一旦数据被压缩,从流中获取字节,smth like.ToArray()

3) 将压缩后的原始字节分配给 DTORawBytes

4) 将此 DTO 作为 WCF 服务合同的一部分返回

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