虽然我并不关心为这项工作实施Disposable。但是,我想从SO的人那里获取输入,当IHttp处理程序使用该值时,他们如何实现Disposable。
故事是:我有一些自定义构建的IHttpResult类,我目前正在将它用于Webapi2框架中的API项目。
我有一个名为OKFileDownloadResult的IHttpResult子类,它基本上从文件位置读取流内容或内容,并将该文件发送给客户端。
以下是我的代码:
var response = new HttpResponseMessage(HttpStatusCode.OK);
StreamContent streamContent = null;
if (Content == null)
{
streamContent = new StreamContent(File.OpenRead(MapPath(LocalPath)));
}
else
{
streamContent = new StreamContent(new MemoryStream(Content));
}
response.Content = streamContent;
response.Content.Headers.ContentType = MediaTypeHeaderValue.Parse(ContentType);
response.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment")
{
FileName = DownloadFileName,
};
return response;
在这里,我将回复作为我api行动的最后一件事。
然而,如果我像
那样使用我的问题使用(response = HttpResponse ...){}
我收到以下错误,这是可以理解的。
System.ObjectDisposedException:无法访问已处置的对象。 对象名称:' System.Net.Http.HttpResponseMessage'。
我的问题是我真的需要担心MemoryStream,StreamContent或HttpResposneMessage的任何处理吗?
或者我应该将此任务留给.Net GC?