'System.io.compression.gzipstream' kann nicht serialisiert werden. Erwägen Sie, es mit dem DataContractattribute -Attribut zu markieren
-
26-10-2019 - |
Frage
Ich versuche, den WCF -Dienst zu verwenden, um GZIP -Dateien hochzuladen. Ich versuche, Dateien mit GZIP zu komprimieren und sie dann an den WCF -Dienst weiterzugeben, um auf Server hochgeladen zu werden. Jedes Mal, wenn ich den Code ausführe, erhalte ich diese Fehlermeldung
'System.io.compression.gzipstream' kann nicht serialisiert werden. Erwägen Sie, es mit dem DataContractAttribute -Attribut zu markieren und alle seine Mitglieder zu markieren, die Sie mit dem DataMemberAttribute -Attribut serialisieren möchten.
Ich habe dieses Eigentumsmitglied markiert sein [DataMember]
. Ich habe auch das getan [DataContract]
und darunter hinzugefügt [Serialiable]
Das ist nicht erforderlich, um ehrlich zu sein.
Kann jemand helfen?
Lösung
Ich bin mir nicht sicher, ob dies ein richtiger Weg ist, aber es hat bei mir funktioniert.
1) Erstellen Sie eine Datenübertragungsobjektklasse
[DataContract]
class ZippedDataDTO
{
[DataMember]
public byte[] RawData {get;set;}
//other relevant metadata
}
2) Sobald die Daten komprimiert sind, erhalten Sie Bytes aus dem Stream, SMTH .ToArray()
3) Weisen Sie die Reißverschleißbytes DTOs zu RawBytes
4) Geben Sie diesen DTO als Teil Ihres WCF -Servicevertrags zurück
[ServiceContract]
interface IService
{
[OperationContract]
ZippedDataDTO GetZippedData();
...
}