C#. не Копируется Stream в MemoryStream

257
09 сентября 2017, 23:17

Здравствуйте, есть ответ полученный для httpClient. Ответ считываю не в строку, а в поток (т.к. вся инфраструктура обмена данными работает с потоками). Этот поток нужно скопировать, но поток не копируется.

using (HttpContent content = response.Content)
{
    var outputBody = await content.ReadAsStreamAsync();
    //DEBUG-------------
    StreamReader reader = new StreamReader(outputBody);
    string text = reader.ReadToEnd();  //чтение полученного потока дает правильную строку.
    //DEBUG-------------
    var memoryStream = new MemoryStream();
    outputBody.CopyTo(memoryStream);   // копируем поток
    //DEBUG-------------
    reader = new StreamReader(memoryStream);
    text = reader.ReadToEnd();  // тут пустая строка!!!!!!!!!!!
    //DEBUG-------------
    return new MyHttpResponse { Body = memoryStream, StatusCode = response.StatusCode, Headers = response.Headers };
}

Не могу понять в чем дело?

Answer 1
//DEBUG-------------
StreamReader reader = new StreamReader(outputBody);
string text = reader.ReadToEnd();  //чтение полученного потока дает правильную строку.
//DEBUG-------------

Вот это удали, потому что уже нечего читать, когда всё прочитано.

var memoryStream = new MemoryStream();
outputBody.CopyTo(memoryStream);   // копируем поток

После этого надо перемотать поток в начало:

memoryStream.Position = 0;
//DEBUG-------------
reader = new StreamReader(memoryStream);
text = reader.ReadToEnd();  // тут пустая строка!!!!!!!!!!!
//DEBUG-------------

Если это оставить, то надо ещё раз добавить

memoryStream.Position = 0;
READ ALSO
Синхронизация imap (клиент-сервер) c#

Синхронизация imap (клиент-сервер) c#

Добрый день, стоит такая цель : синхронизироваться с почтой и иметь возможность загружать/скачивать письмаЕсть ли такая возможность ? желательно...

320
Создать свой класс [требует правки]

Создать свой класс [требует правки]

Пожалуйста, приведите пример как создать новый тип (класс) age, наследовать его от int, ограничить от 0 до 100Спасибо

358
Автоматический разогрев сервера IIS ASP.NET MVC?

Автоматический разогрев сервера IIS ASP.NET MVC?

Как автоматически разогреть сервер IIS? У меня нет доступа к Application Pools, то бишь, у меня нету доступа к настройке IIS, по этому не могу воспользоваться...

308
Nlog не сохраняет логи на microSD

Nlog не сохраняет логи на microSD

На устройстве запускаю приложение, которое при старте должно записывать соответствующие сообщение в блокнотОднако логирования не происходит,...

286