Возврат записей в чанках из 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 - Спасибо за любые предложения.

0 ответов

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