WCF流式传输时间

问题描述 投票:0回答:1

我想开始我应该问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不立即返回然后允许我传输文件数据?

.net wcf streaming
1个回答
0
投票

事实证明,Visual Studio 2017中包含的.net 4.5.2实现似乎不支持流模式。

我最终为大文件添加了REST下载,这对我有用。

© www.soinside.com 2019 - 2024. All rights reserved.