在自定义IHttpResult中处理HttpResponse

时间:2014-11-05 23:16:51

标签: c# asp.net .net asp.net-web-api idisposable

虽然我并不关心为这项工作实施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?

0 个答案:

没有答案