我想从数据库中的连接样式字符串下载文件(css类型)。我想返回使用给定样式字符串创建的新文件并返回http get request
答案 0 :(得分:0)
您的返回对象可能正在使用一个或两个IDisposable
个对象,但很快就会丢弃它们(通过using
语句)。
以不同的方式管理您的记忆 - 在适当的情况下手动拨打stream.Dispose()
和httpResponseMessage.Dispose()
- 可能在您的课程析构函数中,但根据我的经验HttpResponseMessage
并不需要像处理它一样进行处理#39;一旦你完成了垃圾收集器的处理,垃圾收集器就会处理它。示例代码:
``` byte [] textAsBytes = Encoding.Unicode.GetBytes(concatenatedStyles);
using(MemoryStream stream = new MemoryStream(textAsBytes)) {
var httpResponseMessage = new HttpResponseMessage(HttpStatusCode.OK);
httpResponseMessage.Content = new StreamContent(stream);
httpResponseMessage.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment") {
FileName = "main-theme.scss"
};
httpResponseMessage.Content.Headers.ContentType = new MediaTypeHeaderValue("text/css");
return ResponseMessage(httpResponseMessage);
}
```
您可能还需要删除MemoryStream周围的使用,我不能100%确定,因为我无法在我的系统上编译您的代码。
答案 1 :(得分:-2)
ResponseMessageResult responseMessageResult;
using (MemoryStream stream = new MemoryStream(textAsBytes))
using (HttpResponseMessage httpResponseMessage = new HttpResponseMessage(HttpStatusCode.OK))
{
httpResponseMessage.Content = new StreamContent(stream);
httpResponseMessage.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment")
{
FileName = "main-theme.scss"
};
httpResponseMessage.Content.Headers.ContentType = new MediaTypeHeaderValue("text/css");
responseMessageResult = ResponseMessage(httpResponseMessage);
}
return responseMessageResult;