如何让流保持足够长的时间

How to Keep Stream Alive Just Long Enough

我有一个以如下所示的块结尾的函数。

using (var stream = new MemoryStream(someBytes))
{
    var result = new HttpResponseMessage { Content = new StreamContent(stream) };
    return result;
}

然而,在另一个文件中,这个结果用在这样一行中:

var justSomeString = returnedResultFromAbove.Content.ReadAsStringAsync().Result;

这会导致以下错误:

System.Net.Http.HttpRequestException: Error while copying content to a stream. ---> System.ObjectDisposedException: Cannot access a closed Stream.

解决此问题的最佳方法是什么?我不应该将我的 MemoryStream 包装在 using 块中吗?有没有办法让它保持打开的时间足够长以供阅读然后处理?

您的流被 using 语句包装。 using 语句将在退出方法后立即处理流。为了做你想做的事,你需要将处理责任传递给调用者。您需要将 using 语句放在调用方方法中。

using(var stream = GetMyStream())
{
   // do some work
}