2017-06-19 75 views
0

我正在尝试从WebAPI Rest服务中读取并返回文件内容,我正在返回使用..块内的响应。我得到System.ObjectDisposedException。有人可以帮我弄这个吗?无法访问已关闭的文件System.ObjectDisposedException

using (var fileStream = new FileStream(LocalFilePath, FileMode.Open)) 
      { 
       response.Content = new StreamContent(fileStream); 
       response.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment") { FileName = "MaxRecords.xls" }; 
       response.Content.Headers.ContentType = new MediaTypeHeaderValue("application/vnd.ms-excel"); 
       return response; 
      } 
+1

不要使用“使用”块吗? – Evk

+0

它工作如果你删除使用块? 'response.Content'引用了一个被放置的实例('fileStream')。 –

+0

@DaveBecker是的,它使用块删除后工作..但我想用块来处理文件流:( –

回答

0

您需要创建一个流推送对象,根据需要在文件上生成文件位。我自己创建了一个,但我知道这些日子里有一个 - 称为PushStreamContent。这是一个非常简单的例子,does something similar到你需要的。

问题是,客户端需要关闭流,或者在写入所有字节时PushStreamContent需要关闭它,但是使用using块时,您将在发送时立即关闭它。

相关问题