我有一个 ASP.NET Web API 项目,它调用一个用 delphi 编写的服务。在我从服务获取的数据流变得太大之前,此连接工作正常(delphi 服务只是从数据库中读取一些数据,因此它们之间没有文件被发送)。
现在,我当然增加了 MaxBufferSize,但在某些时候它变得荒谬,现在我正在寻找更复杂的解决方案。所以我遇到了异步(我的 delphi 服务中的每个方法也可以作为异步使用,感谢 Microsoft)。但是即使我将我的函数调用为异步,当数据流大于设置的缓冲区大小时我仍然会收到错误消息(实际上我没有收到错误消息,执行只是在 await GetData
处停止。
那么,是否有可能以 block 的形式处理我从服务中获取的数据?例如,我设置了数据流的最大大小,并且该函数一直在获取数据直到我获取所有数据?
谢谢
最佳答案
异步与缓冲区大小或流式传输无关。
So, is there a possibillity to process the data that I am getting from my service in chunks?
是的,这就是您所需要的。我知道的所有 Web 服务 API 都支持流式传输。 WCF 和 HttpClient 当然可以。搜索例如“httpclient stream response”应该让你开始。
据我所知,这里不需要异步 IO。
关于c# webservice 调用,缓冲区太小(异步?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31711971/