1

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

ashx 中的代码:

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

1 回答 1

6

实际上,您可以使用任何流,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;    
}

如果您需要直接写入输出流,请考虑使用PushStreamContent. 例子

于 2017-08-08T21:15:39.560 回答