2016-06-06 1 views
0

GZip을 사용하지 않고 비 직렬화하면 완료됩니다. 하지만 GZip 함께 deserializing 내가 deserialization 오류가 있습니다.GZip을 사용하여 비 직렬화 할 때

직렬화 :

using (MemoryStream ms = new MemoryStream()) 
{ 
    using (var compressionStream = new GZipStream(ms, CompressionMode.Compress)) 
    { 
     serializator.Serialize(compressionStream, obj); 
    } 
    byte[] result = ms.ToArray(); 
    return result; 
} 

직렬화 복원 : 바이트 수는 잘못된 의견에 명시된 바와 같이

using (MemoryStream ms = new MemoryStream(_objBytes)) 
{ 
    using (GZipStream decompressionStream = new GZipStream(ms, CompressionMode.Decompress)) 
    { 
     return serializator.Deserialize(decompressionStream, null, objType, _objBytes.Length); 
    } 
} 
+1

글쎄, 바이트 수는 잘못되었습니다. 비 압축 * 바이트 수를 전달할 때 * 압축 된 바이트 수를 디시리얼라이저로 전달합니다. –

+0

어떤 시리얼 라이저를 사용합니까? –

+0

@ThorstenDittmar : 압축되지 않은 바이트를 어떻게 전달할 수 있습니까? – GLeBaTi

답변

1

. 왜 그걸 왜 지정 했니? 길이 매개 변수없이 오버로드를 사용할 수 있습니다.

RuntimeTypeModel.Default.Deserialize(decompressionStream, null, objType); 
+0

감사합니다. 그것은 작동 : 반환 serializator.Deserialize (gzipStream, null, objType); – GLeBaTi