我正在使用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