Возврат записей в чанках из WebApi с использованием PushStreamContent
Я пытаюсь вернуть клиенту записи в виде кусков, используя приведенный здесь пример: http://blog.guvweb.co.uk/2014/07/02/streaming-web-api/ Я посмотрел на связанные вопросы здесь: Использование PushStreamContent для разделения данных на куски, но проблема все еще остается
Вот мой код
WebApi:
[HttpGet]
[ActionName("PushStreamContent")]
public HttpResponseMessage PushStreamContent()
{
var response = Request.CreateResponse();
response.Content = new PushStreamContent((stream, content, context) =>
{
const int pageSize = 1000;
int total = db.Table.Count();
int chunkIterate = total / 10000;
for (int i = 0; i < chunkIterate; i++)
{
int pageNo = i;
// Determine the number of records to skip
int skip = (pageNo) * pageSize;
// Select the based on paging parameters
var feedData = db.Table
.OrderBy(c => c.Id)
.Skip(skip)
.Take(pageSize)
.ToList();
// Collection of objects
var data = new PagedResult<FeedDetail>(feedData, pageNo, pageSize, total);
var serializer = new JsonSerializer();
using (var writer = new StreamWriter(stream))
{
serializer.Serialize(writer, data);
stream.Flush();
}
Thread.Sleep(1000);
}
stream.Close();
});
return response;
}
Javascript:
var xhr = new XMLHttpRequest();
xhr.open("GET", "/api/Lookup/PushStreamContent", true);
xhr.onprogress = function () {
console.log("PROGRESS:", xhr.responseText);
};
xhr.send();
Проблема заключается в том, что возвращенный ответ объектов xhr обрезан, и не все записи присутствуют при проверке объекта в функции xhr.onprogress. Я почти уверен, что это связано с длиной содержимого ответа, но я не уверен, поскольку я никогда не использовал PushStreamContent и не уверен, с чего начать. Проект.NET 4.5 - Спасибо за любые предложения.