'System.io.compression.gzipstream' kann nicht serialisiert werden. Erwägen Sie, es mit dem DataContractattribute -Attribut zu markieren

StackOverflow https://stackoverflow.com/questions/7317285

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?

War es hilfreich?

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();  
    ...
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top