c#webservice调用,缓冲区太小(异步?)

c#webservice调用,缓冲区太小(异步?),c#,asp.net,web-services,asynchronous,async-await,C#,Asp.net,Web Services,Asynchronous,Async Await,我有一个ASP.NETWebAPI项目,它调用一个用delphi编写的服务。在我从服务中获取的数据流变得太大之前,这种连接工作得非常好(delphi服务只是从数据库中读取一些数据,因此没有在它们之间发送文件) 现在,我当然增加了MaxBufferSize,但在某个点上它变得荒谬,现在我正在寻找一个更复杂的解决方案。所以我遇到了async(我的delphi服务中的每个方法也可以作为async使用,谢谢Microsoft)。但是,即使我以异步方式调用我的函数,当数据流大于设置的缓冲区大小时,我仍然会

我有一个ASP.NETWebAPI项目,它调用一个用delphi编写的服务。在我从服务中获取的数据流变得太大之前,这种连接工作得非常好(delphi服务只是从数据库中读取一些数据,因此没有在它们之间发送文件)

现在,我当然增加了MaxBufferSize,但在某个点上它变得荒谬,现在我正在寻找一个更复杂的解决方案。所以我遇到了async(我的delphi服务中的每个方法也可以作为async使用,谢谢Microsoft)。但是,即使我以异步方式调用我的函数,当数据流大于设置的缓冲区大小时,我仍然会收到一个错误(实际上我没有收到错误,执行只是在
wait GetData
处停止)。 那么,是否有可能将我从我的服务中获得的数据分块处理?例如,我设置了数据流的最大大小,函数会一直提取,直到我获得所有数据


谢谢,异步与缓冲区大小或流无关

那么,是否有可能将我从服务中获得的数据分块处理

是的,这就是您需要的。我知道的所有web服务API都支持流。WCF和HttpClient当然支持。搜索例如“HttpClient stream response”应该会让您开始


从给出的信息可以看出,这里不需要异步IO。

但我不是通过http(不是直接通过http)。我有服务对象(我已将服务嵌入到我的项目中)通过对象,我可以访问函数。你是说,对于这种特殊情况,我必须重写我的服务连接,我不能使用服务对象,但必须切换到http(客户端)并“手动”进行SOAP调用?您现在正在使用WCF吗?WCF支持流式传输。正如我所说,我刚刚使用了向我的项目添加服务的可能性(右键单击->向我的项目添加服务引用)。我假设WCF在幕后使用,但在这种特殊情况下,当我添加我的服务时(用delphi编写)我有一个服务对象,我用它来访问我的功能。但是根据你说的,我必须手动进行这些调用,这样我才能使用流式传输(我在将服务连接到我的项目时得到的服务对象上没有看到此选项)好的,“服务引用”正在使用WCF。如果要避免缓冲,则需要使用流式传输。搜索“WCF流式传输”以查看如何完成。这将解决您的问题。解决方法是以每次调用较少的数据发出多个调用,或使用文件等“带外”传输数据。