我正在尝试使用WCF服务上传GZip文件。我试图使用Gzip压缩文件,然后将其传递给WCF服务以上传到服务器。 每次我运行代码时都会收到此错误消息
'System.IO.Compression.GZipStream'无法序列化。考虑 使用DataContractAttribute属性标记它,并标记所有 要使用DataMemberAttribute序列化的成员数 属性。
我已将此属性成员标记为[DataMember]
。我还完成了[DataContract]
及以下添加了[Serialiable]
,这不是诚实的。
任何人都可以帮忙吗?
答案 0 :(得分:0)
我不太确定这是一种正确的方式,但它对我有用。
1)创建数据传输对象类
[DataContract]
class ZippedDataDTO
{
[DataMember]
public byte[] RawData {get;set;}
//other relevant metadata
}
2)压缩数据后,从流中获取字节,如.ToArray()
3)将压缩的原始字节分配给DTO的RawBytes
4)将此DTO作为WCF服务合同的一部分返回
[ServiceContract]
interface IService
{
[OperationContract]
ZippedDataDTO GetZippedData();
...
}