我正在尝试提供一种WCF服务,该服务允许使用“流传输”下载文件。
在服务器端的Web.config中,我具有以下绑定配置:
<bindings>
<basicHttpBinding>
<binding name="RemoteFileService"
transferMode="Streamed"
maxReceivedMessageSize="2147483647"
maxBufferSize="2147483647">
<readerQuotas maxDepth="2147483647"
maxStringContentLength="2147483647"
maxArrayLength="2147483647"
maxBytesPerRead="2147483647"
maxNameTableCharCount="2147483647" />
</binding>
</basicHttpBinding>
</bindings>
将服务引用添加到客户端应用程序(在Visual Studio中)时,会在App.config中生成以下配置:
<bindings>
<basicHttpBinding>
<binding name="BasicHttpBinding_IDownloadTest" />
</basicHttpBinding>
</bindings>
如您所见,实际上并没有指定任何选项。
我找到了使用流传输here创建Web服务的教程。在“实施:WebServer”一章中,作者为客户端绑定指定了一系列选项。
现在,我的问题是:
transferMode="Streamed"
,是否可以使用流式下载?transferMode
或maxReceivedMessageSize
之类的内容)sendTimeout
或openTimeout
)而服务器不指定超时(例如本文中的内容)是否有优势?FileStream
,因为它无法序列化,而我们应该使用MemoryStream
,但是其他来源似乎在广泛使用FileStream
。)我发现了一些类似的问题,但是他们主要是在谈论端点或不同的绑定类型(例如,客户端为NetTcpBinding
,服务器为BasicHttpBinding
)