Существует серьезная проблема с ответом SoloBold , которую я обнаружил во время тестирования. При использовании его для чтения файла через FtpWebRequest
в MemoryStream
он периодически не мог прочитать весь поток в память. Я отследил это до Peek()
, иногда возвращая -1 после первых 1460 байт, даже если Read()
был бы успешным (файл был значительно больше этого).
Вместо этого я предлагаю решение ниже:
MemoryStream memStream;
using (Stream response = request.GetResponseStream()) {
memStream = new MemoryStream();
byte[] buffer = new byte[1024];
int byteCount;
do {
byteCount = stream.Read(buffer, 0, buffer.Length);
memStream.Write(buffer, 0, byteCount);
} while (byteCount > 0);
}
// If you're going to be reading from the stream afterwords you're going to want to seek back to the beginning.
memStream.Seek(0, SeekOrigin.Begin);
// Use memStream as required