GZipStream через .NET webservice вызывает проблему с недопустимым символом - PullRequest
1 голос
/ 05 октября 2011

Я работаю над сложной настройкой архитектуры клиент-серверного .NET, и у меня абсолютно нет контроля над отправленным или полученным запросом / ответом, за исключением того, что я могу добавить свои вещи в объекты запроса / ответа.

Iнабор данных на стороне сервера для отправки клиенту, и я использую 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

Любая идея исправить эту проблему, учитывая тот факт, что я могу изменить механизм обработки запросов / ответов, очень ценится.Кроме того, я также запрашиваю любые идеи о лучших способах обработки больших наборов данных через веб-сервис.Спасибо.

...