#web-services #gzipstream
#веб-сервисы #gzipstream
Вопрос:
Я работаю над сложной настройкой архитектуры клиент-сервера .NET, и я абсолютно не контролирую отправленный или полученный запрос / ответ, за исключением того, что я могу добавлять свои данные в объекты запроса / ответа.
У меня есть набор данных на стороне сервера для отправки клиенту, и я использую GZipStream для сжатия набора данных. Сжатие работает нормально, но при получении ответа на стороне клиента я получаю недопустимое исключение символов — 0x1F. Я погуглил и не смог найти подходящий ресурс для решения этой проблемы.
Код сжатия:
Private Function Compress(ByVal data() As Byte) As Byte()
Try
'---the ms is used for storing the compressed data---
Dim ms As New MemoryStream()
Dim zipStream As Stream = Nothing
zipStream = New GZipStream(ms, _
CompressionMode.Compress, True)
'---or---
'zipStream = New DeflateStream(ms, _
' CompressionMode.Compress, True)
'---compressing using the info stored in data---
zipStream.Write(data, 0, data.Length)
zipStream.Close()
ms.Position = 0
'---used to store the compressed data (byte array)---
Dim compressed_data(CInt(ms.Length - 1)) As Byte
'---read the content of the memory stream into
' the byte array---
ms.Read(compressed_data, 0, CInt(ms.Length))
Return compressed_data
Catch ex As Exception
Return Nothing
End Try
End Function
Любая идея исправить эту проблему, учитывая тот факт, что я могу изменить механизм обработки запросов / ответов, действительно ценится. Кроме того, я также запрашиваю любые идеи о лучших способах обработки передачи больших наборов данных через веб-сервис. Спасибо.