Я пытаюсь записать ApiController
, который передает JSON данные в ответе. Это выглядит примерно так:
public class MyController : ApiController
{
IDocumentWriter _writer;
public MyController(IDocumentWriter writer)
{
_writer = writer;
}
[HttpGet]
public async Task<HttpResponseMessage> Get()
{
var response = Request.CreateResponse(HttpStatusCode.OK);
using (var stream = new MemoryStream())
{
response.Content = new StreamContent(stream);
await _writer.WriteAsync(stream);
response.Content.Headers.ContentType = new MediaTypeHeaderValue("application/json");
response.Content.Headers.ContentLength = stream.Length;
}
return response;
}
}
IDocumentWriter
принимает поток и записывает в него данные JSON. Вызов Get
завершается неудачно с System.Threading.Tasks.TaskCanceledException
, чего я не понимаю, потому что я жду WriteAsync
. Конечно, он заканчивает писать, прежде чем вернуться? Что я делаю не так?