“系统.IO.压缩.GZipStream”无法序列化。考虑使用 DataContractAttribute 属性对其进行标记

发布于 2024-12-03 03:56:20 字数 397 浏览 1 评论 0原文

我正在尝试使用 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

£冰雨忧蓝° 2024-12-10 03:56:20

我不太确定这是一个正确的方法,但它对我有用。

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();  
    ...
}

I am not too sure this is a proper way, but it worked for me.

1) Create a Data Transfer Object class

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

    //other relevant metadata
}

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

[ServiceContract]
interface IService
{
    [OperationContract]
    ZippedDataDTO GetZippedData();  
    ...
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文