如何从asp.net web api中的样式字符串下载css文件

时间:2017-12-05 09:29:50

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

我想从数据库中的连接样式字符串下载文件(css类型)。我想返回使用给定样式字符串创建的新文件并返回http get request

2 个答案:

答案 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;