使用StreamContent时如何正确处理流

Arj*_*nbu 27 .net c# asp.net-web-api

我正在尝试从我的webapi端点返回一个流,然后通过处理流来清理.

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

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

    return response;
}
Run Code Online (Sandbox Code Playgroud)

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

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

Ola*_*ybø 37

由于您需要处理的唯一资源是HttpResponseMessage您不必担心的内容.该框架为您处理.它将处理HttpResponseMessage将进行所需的所有处理.删除使用它应该工作得很好.

HttpResponseMessage将在处置时处置其内容.请参阅.NET Core实现

StreamContent将在处理它时处理它的流.请参阅StreamContent的.NET Core实现

如果您需要处理HttpResponseMessage未处理的东西,您可以request.RegisterForDispose按照Filip Woj的描述使用