Какая альтернатива для 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, пример

Другие вопросы по тегам