HttpContext.Response.OutputStream 在 WebAPI 的 HttpResponseMessage 中使用的替代方法是什么
What is the alternative for HttpContext.Response.OutputStream to use in WebAPI's 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);
实际上您可以使用任何流,例如 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
。 Example
我正在编写一个用于处理 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);
实际上您可以使用任何流,例如 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
。 Example