“系统.IO.压缩.GZipStream”无法序列化。考虑使用 DataContractAttribute 属性对其进行标记
我正在尝试使用 WCF 服务上传 GZip 文件。我尝试使用 Gzip 压缩文件,然后将其传递到 WCF 服务以上传到服务器。 每次运行代码时我都会收到此错误消息
“System.IO.Compression.GZipStream”无法序列化。考虑 使用 DataContractAttribute 属性对其进行标记,并标记所有 您希望使用 DataMemberAttribute 序列化其成员的数量 属性。
我已将此属性成员标记为[DataMember]
。我还完成了 [DataContract]
并在下面添加了 [Serialable]
,老实说,这是不需要的。
有人可以帮忙吗?
I am trying to use WCF service to upload GZip files. Im trying to compress files using Gzip and then passing it through to WCF service to be uploaded to server.
Every time I'm running the code I get this error message
'System.IO.Compression.GZipStream' cannot be serialized. Consider
marking it with the DataContractAttribute attribute, and marking all
of its members you want serialized with the DataMemberAttribute
attribute.
I have marked this property member to be [DataMember]
. I have also done the [DataContract]
and below that added [Serialiable]
which is not needed to be honest.
Can any one help?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我不太确定这是一个正确的方法,但它对我有用。
1) 创建数据传输对象类
2) 数据压缩后,从流中获取字节,如
.ToArray()
3) 将压缩后的原始字节分配给 DTO 的
RawBytes
4) 将此 DTO 作为您的 WCF 服务合同的一部分返回
I am not too sure this is a proper way, but it worked for me.
1) Create a Data Transfer Object class
2) Once data is compressed, get bytes from the stream, smth like
.ToArray()
3) Assign the zipped raw bytes to DTO's
RawBytes
4) Return this DTO as a part of your WCF service contract