Я работаю с сервисом RESTful WCF. Один из методов сервиса возвращает byte [] (который содержит файл).
На стороне клиента у меня есть некоторый код, который использует класс WebRequest для вызова этого конкретного метода службы. Используя WebRequest, я получаю поток ответов вроде:
Stream stream = webReq.GetResponse().GetResponseStream();
Из этого потока я затем восстанавливаю байт [] и затем выводю файл локально. Проблема в том, что восстановленный файл на стороне клиента не похож на файл, который был возвращен со стороны службы (я получаю поврежденный PDF-файл, размер которого намного больше, чем файл, отправленный со стороны службы). Непосредственно перед тем, как метод service возвращает byte [], я вывел этот byte [] на диск на стороне службы, и он создал файл нормально ... Это указывает на что-то не так между этим методом, возвращающим byte [] и моей клиентской стороной восстановление байта [] из потока на стороне клиента ... для восстановления байта [] из потока, я использую следующий метод, который кто-то опубликовал в прошлом в stackoverflow:
public static byte[] ReadFully(Stream input)
{
byte[] buffer = new byte[16*1024];
using (MemoryStream ms = new MemoryStream())
{
int read;
while ((read = input.Read(buffer, 0, buffer.Length)) > 0)
{
ms.Write(buffer, 0, read);
}
return ms.ToArray();
}
}
Есть идеи, что может пойти не так?