2016-08-05 100 views
13

我试图从我的webapi端点返回一个流,然后通过处置流来清理。如何在使用StreamContent时正确处理流

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

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

    return response; 
} 

配置流的正确方法是什么?

(由于MSDN只字未提StreamContent或其方法的行为,我的临时解决方案是将数据流中的内容复制到一个字节数组,并返回。)

回答

21

正如你唯一需要是资源处置是HttpResponseMessage的内容,你不必担心它。该框架为您处置。它将处置HttpResponseMessage,它将完成所有需要的处理。删除使用,它应该工作得很好。

HttpResponseMessage将在处置其内容时处置它。 请参阅.NET Core implementation

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

如果您需要处置未设置由你可以使用request.RegisterForDispose的HttpResponseMessage东西由Filip Woj

描述
相关问题