开发者

Streaming WCF DataService Response

I'm trying to stream the response of my wcf dataservice to make waiting time more user friendly. The response is in XML format (I use entity framework 4.1) I have these predefined events

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

a开发者_如何学Gofter that I call DataServiceQuery Execute method

var items = myItems.Query.Execute();

Here is the body of SendingRequest event

        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);

So the problem is that after that nothing is happening. The next event ReadingEntity is not firing. How can I solve this issue?


You cannot change the way how service sends the request. The event is there to allow you modify you request headers but the service must call it itself. Your code has most probably broke the service's functionality. Also I don't think that what you are trying to do is possible. WCF Data Service still uses WCF internally and unless it is using streaming it will always wait for the whole message before it passes it to your upper layer (context). Streaming in WCF data services is possible only when implementing streaming provider and it is mostly for downloading binary data not for downloading common data in chunks.

What you are trying to do would require chunked response (used in WCF streaming). With default WCF feature set working with chunked response is out of your control.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜