WCF流式传输时间
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了WCF流式传输时间相关的知识,希望对你有一定的参考价值。
我想开始我应该问Streaming WCF是否在没有MTOM的情况下工作,或者是否需要MTOM?我使用的是MTOM,但它不适用于我们基于Mono的macOS客户端,所以我们不得不将其关闭。
我们在IIS上托管了一个WCF Web应用程序。
这是客户端上的绑定:
<binding name="BasicHttpBinding_IDataService" transferMode="Streamed"
sendTimeout="01:05:00" maxReceivedMessageSize="504857600">
<security mode="Transport">
<transport clientCredentialType="None" proxyCredentialType="None" realm="" />
</security>
</binding>
这是服务器上的绑定:
<binding name="BasicHttpBinding_IDataService" transferMode="Streamed" sendTimeout="01:05:00" maxReceivedMessageSize="130000000">
<readerQuotas maxArrayLength="104857600" maxStringContentLength="104857600" />
<security mode="Transport">
<transport clientCredentialType="None" proxyCredentialType="None" realm="" />
</security>
</binding>
我在客户端上调用了一个名为ReceiveAsync的方法。它返回一个流对象。然后我调用流对象来下载数据。
我遇到的问题是看起来,在返回整个文件之前,对ReceiveAsync的调用不会返回,这似乎更像是缓冲而不是流式传输。
如果这在足够慢的网络连接上运行,则它会在被叫到ReceiveAsync上超时。
为什么ReceiveAsync不立即返回然后允许我传输文件数据?
答案
事实证明,Visual Studio 2017中包含的.net 4.5.2实现似乎不支持流模式。
我最终为大文件添加了REST下载,这对我有用。
以上是关于WCF流式传输时间的主要内容,如果未能解决你的问题,请参考以下文章