无法访问已关闭的文件System.ObjectDisposedException
问题描述:
我正在尝试从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;
}
答
您需要创建一个流推送对象,根据需要在文件上生成文件位。我自己创建了一个,但我知道这些日子里有一个 - 称为PushStreamContent。这是一个非常简单的例子,does something similar到你需要的。
问题是,客户端需要关闭流,或者在写入所有字节时PushStreamContent
需要关闭它,但是使用using
块时,您将在发送时立即关闭它。
答
删除使用块。这不是必需的。 StreamContent
将Dispose
它给你。
不要使用“使用”块吗? – Evk
它工作如果你删除使用块? 'response.Content'引用了一个被放置的实例('fileStream')。 –
@DaveBecker是的,它使用块删除后工作..但我想用块来处理文件流:( –