使用StreamContent时如何正确处理流

时间:2016-08-05 08:16:30

标签: c# .net asp.net-web-api

我正在尝试从我的webapi端点返回一个流,然后通过丢弃流进行清理。

我希望这是正确的方法,但当然在返回之前处理流。

using(var stream = GetStream()){
    var response = new HttpResponseMessage();
    response.Content = new StreamContent(stream);

    return response;
}

处理流的正确方法是什么?

(由于MSDN没有说明StreamContent或其方法的行为,我的临时解决方案是将流的内容复制到字节数组并返回它。)

1 个答案:

答案 0 :(得分:33)

由于您需要处理的唯一资源是HttpResponseMessage的内容,您不必担心它。该框架为您处理。它会处理HttpResponseMessage,它将完成所需的所有处理。删除使用它应该工作正常。

HttpResponseMessage将在处置时处置其内容。 见.NET Core implementation

StreamContent将在处理它时处理它的流。 见.NET Core implementation of StreamContent

如果您需要处置HttpResponseMessage未处理的内容,您可以request.RegisterForDispose

所述使用fork