我正在使用WCF流式传输将文件从WCF客户端传输到netTcpBinding
服务。WCF:通过TransferMode传输文件到服务器时延迟的客户端响应=使用netTcpBinding流式传输
一旦客户端使用Stream实例调用服务,服务将开始通过套接字连接(StreamConnection
)从Stream实例读取。但是,如果在服务端从流读取的过程中发生异常,客户端不能立即得到异常。
我发现了与绑定的sendTimeout
相关的延迟时间。如果我设置sendTimeout=20 seconds
,则客户端在20秒内得到异常延迟;如果sendTimeout = 1 second
,客户端立即得到异常。
我做了一些研究。我的理解是,即使在服务上抛出异常,它也不会抛出客户端,直到StreamConnection.Read()/StreamConnection.Write()
。这个超时时间看起来与绑定sendTimeout同步。
是否可以保留sendTimeout
并让客户立即得到异常?
这里是服务绑定,(为了与大尺寸的传输文件,我改变maxReceivedMessageSize,,SendTimeOut和receiveTimeout等价值)
<netTcpBinding>
<binding name="StreamingNetTCPBinding" transferMode="Streamed" maxConnections="500" maxReceivedMessageSize="2147483647" maxBufferSize="2147483647" sendTimeout="00:45:00" receiveTimeout="23:00:00" listenBacklog="20">
<readerQuotas maxArrayLength="2147483647" maxDepth="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" maxStringContentLength="2147483647" />
</binding>
</netTcpBinding>
任何机构有任何想法? – user1256475