在WebAPI的HttpResponseMessage中使用HttpContext.Response.OutputStream的替代方法是什么

时间:2017-08-08 17:27:23

标签: asp.net-web-api httpresponsemessage

我正在编写一个用于处理PDF文档的WebAPI。它是在早期实现IHttpHandler并使用HttpContext获取上下文的ashx页面中编写的。我现在正在使用WebAPI编写它。在WebAPI中,我们有HttpResponseMessage。对于HttpContext.Response.BinaryWrite,我们在HttpResponseMessage中有新的ByteArrayContent。但是WebAPI中HttpContext.Response.OutputStream的替代方法是什么?我需要在WebAPI中使用OutputStram的替代方法,因为我将此OutputStream作为参数传递给另一个dll。

ashx中的代码:

SomeReport.PdfReport rpt = new SomeReport.PdfReport(docID);
rpt.CreateReport(context.Response.OutputStream);

1 个答案:

答案 0 :(得分:3)

实际上,您可以使用任何流,例如show(),但结果应该包含在MemoryStream中。

StreamContent

如果您需要直接写入输出流,请考虑使用public HttpResponseMessage Get() { var response = Request.CreateResponse(); var outputStream = new MemoryStream(); //write data to output stream //or passing it to somewhere outputStream.WriteByte(83); outputStream.Position = 0; response.Content = new StreamContent(outputStream); return response; } Example