"sasha" ...

> на строке
>
> Buffer.BlockCopy(r.Data, 0, buffer, 0, bufferLength);
>
>
> с сообщением
>
> Offset and length were out of bounds for the array or count is greater
> than the number of elements from index to the end of the source collection.

    Глянь ещё на r.Data.Length.

    2.1 может вернуть буфер меньшей длины, чем клиент передал.
Стандартные клиенты младших версий это нормально обрабатывают.

Соответственно правильно будет писать

if (r.Data.Length > bufferLength)
    throw "сервер вернул слишком много данных. Я столько не просил. Помираю"

Buffer.BlockCopy(r.Data, 0, buffer, 0, r.Data.Length);

--
Хорсун Влад


Ответить