Ну, вы не показали ни одного кода, поэтому сложно сказать, что именно не так.
Обычная ошибка состоит в том, что Stream.Read считывает все данные, которые вы запрашиваете, вместо того, чтобы понимать, что он может прочитать меньше, но что его значение на самом деле читается как возвращаемое значение.
Другими словами, код не должен быть:
byte[] buffer = new byte[input.Length];
input.Read(buffer, 0, buffer.Length);
output.Write(buffer, 0, buffer.Length);
но что-то вроде:
byte[] buffer = new byte[32 * 1024];
int bytesRead;
while ( (bytesRead = input.Read(buffer, 0, buffer.Length)) > 0)
{
output.Write(buffer, 0, bytesRead);
}
Но это только предположение. Если бы вы могли опубликовать некоторый код, у нас был бы лучший шанс выяснить это.