在完全读取流C#之前,在响应时处理restResponse sslStream

时间:2019-02-20 09:42:08

标签: c# rest http stream

我正在使用restSharp.dll对象(RestClientRestRequestRestResponse)从服务器读取大量数据。

由于我知道完整的响应将需要时间,因此我想立即处理收到的数据,而无需等待完整的响应。因此,使用ResponseWriter属性:

RestClient restClient = new RestClient("base URI here");
RestRequest restRequest = new RestRequest("relative URI here", RestSharp.Method.GET);
restRequest.ResponseWriter = new Action<Stream>(ReadStream);

IRestResponse restResponse = restClient.Execute(this.restRequest);


                    if (restResponse.StatusCode == HttpStatusCode.OK)
                    {
                       // More code
                    }

ReadStream是:

     public async void ReadStream(Stream ms)
        {
            bufferSize = 1024             
            do
            {

                byte[] tempBuffer = new byte[bufferSize];
                bytesRead =await ms.ReadAsync(tempBuffer, 0, bufferSize); 

                //Data handling

            } while (bytesRead > 0 && ms.CanRead());
        }

问题是,远程服务器处理我的查询的速度比我使用ReadAsync方法读取流要快得多, 并且似乎当服务器返回响应时,SslStream被丢弃了,剩下了我尚未读取的数据。我得到的错误是:

  

bytesRead =等待ms.ReadAsync(tempBuffer,0,bufferSize); >>不能   访问已处置的对象。对象名称:“ SslStream”

我不正确地使用ResponseWriter吗?从服务器收到响应后,有没有办法继续读取流?

谢谢

0 个答案:

没有答案