Потоковый ответ WCF DataService - PullRequest
0 голосов
/ 26 августа 2011

Я пытаюсь передать ответ моей службы данных wcf, чтобы сделать время ожидания более удобным для пользователя.Ответ в формате XML (я использую Entity Framework 4.1) У меня есть эти предопределенные события

service.SendingRequest += service_SendingRequest;
service.ReadingEntity += service_ReadingEntity;
service.WritingEntity += service_WritingEntity;

, после чего я вызываю метод Execute DataServiceQuery

var items = myItems.Query.Execute();

Вот тело события SendingRequest

        var response = (HttpWebResponse)e.Request.GetResponse();
        var resStream = response.GetResponseStream();

        var sb = new StringBuilder();
        var buf = new byte[1024];

        string tempString;
        int count;

        do
        {
            count = resStream.Read(buf, 0, buf.Length);

            if (count != 0)
            {
                tempString = Encoding.ASCII.GetString(buf, 0, count);
                sb.Append(tempString);
            }
        }
        while (count > 0);

Итак, проблема в том, что после этого ничего не происходит.Следующее событие ReadingEntity не запускается.Как я могу решить эту проблему?

1 Ответ

1 голос
/ 27 августа 2011

Вы не можете изменить способ отправки запроса службой. Событие существует, чтобы позволить вам изменить заголовки вашего запроса, но служба должна вызвать его сама. Ваш код, скорее всего, нарушил функциональность сервиса. Также я не думаю, что то, что вы пытаетесь сделать, возможно. Служба данных WCF по-прежнему использует WCF для внутреннего использования, и, если она не использует потоковую передачу, она всегда будет ждать сообщения целиком, прежде чем передать его на верхний уровень (контекст). Потоковая передача в службах данных WCF возможна только при реализации поставщика потоковой передачи , и она в основном предназначена для загрузки двоичных данных, а не для загрузки общих данных в виде фрагментов.

То, что вы пытаетесь сделать, потребует частичного ответа (используется при потоковой передаче WCF). С набором функций WCF по умолчанию работа с чанкованным ответом находится вне вашего контроля.

...