Какая альтернатива для HttpContext.Response.OutputStream для использования в HttpResponseMessage WebAPI
Я пишу WebAPI для обработки документов PDF. Он был написан на странице Ashx ранее, реализуя IHttpHandler и получая контекст, используя HttpContext. Я сейчас пишу это с помощью WebAPI. В WebAPI у нас есть HttpResponseMessage. Для HttpContext.Response.BinaryWrite у нас есть новый ByteArrayContent в HttpResponseMessage. Но какова альтернатива для HttpContext.Response.OutputStream в WebAPI? Мне нужно иметь альтернативу OutputStram в WebAPI, потому что я передаю этот OutputStream в качестве параметра другой DLL.
Код в ашх:
SomeReport.PdfReport rpt = new SomeReport.PdfReport(docID);
rpt.CreateReport(context.Response.OutputStream);
1 ответ
На самом деле вы можете использовать любой поток, например 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
, пример