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流式传输时间的主要内容,如果未能解决你的问题,请参考以下文章

WCF流式传输时间

WCF:使用带有消息契约的流式传输

wcf 服务错误请求 400 流式传输

WCF REST 服务流式传输 JSON 对象

流式处理 WCF 数据服务响应

带有身份验证的 WCF 流式处理