Попробуйте "while (bytesRead > 0)" заменить на "while (bytesRead == bufferSize)"
т.к.
если у нас размер потока, 1025(например) байт, а размер буфера 512 байт, то сначала метод Read будет возвращать 512, а в последней итерации вернет 1
вот ссылка на MSDN