使用WCF發送各種消息,特別是此消息約爲3200000字節以及一些字符串和標題。大型paylode是一個序列化的對象,通過另一個服務從主機中檢索出來,我嘗試在每個方面模擬配置。無法通過WCF發送較大的消息
我使用netTcp綁定的性能,我們正在使用大量的回調。我在客戶端和服務器端都設置了所有可以達到最高級別的選項。
<system.serviceModel>
<bindings>
<netTcpBinding>
<binding name="NetTcpBinding_IEventMissionService" closeTimeout="00:01:00" openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00" transactionFlow="false" transferMode="Buffered" transactionProtocol="OleTransactions" hostNameComparisonMode="StrongWildcard" listenBacklog="10" maxBufferPoolSize="2147483647" maxBufferSize="2147483647" maxConnections="10" maxReceivedMessageSize="2147483647">
<readerQuotas maxDepth="32" maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="4096" maxNameTableCharCount="2147483647" />
<reliableSession ordered="true" inactivityTimeout="00:10:00" enabled="false" />
<security mode="None" />
</binding>
</bindings>
<client>
<endpoint address="net.tcp://localhost:7359/EventMissionMap" binding="netTcpBinding" bindingConfiguration="NetTcpBinding_IEventMissionService" contract="RXEventMissionMapService.IEventMissionService" name="NetTcpBinding_IEventMissionService" />
</client>
</system.serviceModel>
我在客戶端上這種非描述錯誤消息:
套接字連接被中止。 這可能是由於處理您的消息的錯誤 或遠程 主機超時的接收 導致的,或者是基礎網絡 資源問題。本地套接字超時 爲'00:00:59.9979996'。
和內exteption:
一個現有的連接強制性地由遠程主機
運行跟蹤關閉帶來更多的信息(堆棧跟蹤的頂部):
System.ServiceModel.Channels.SocketConnection.Write(Byte [] 緩衝器,的Int32偏移的Int32大小, 布爾立即,時間跨度超時) 棧頂痕量內exteption: System.Net.Sockets.Socket.Send(字節[] 緩衝器,的Int32偏移的Int32大小, 的SocketFlags的SocketFlags )
棧頂跟蹤內部異常:
System.Net.Sockets.Socket.Send(字節[] 緩衝器,的Int32偏移的Int32大小, 的SocketFlags的SocketFlags)
如果我將有效負載設置爲空(不發送3.2 MB的對象),則消息無任何大礙。
對象來自另一個服務的事實可以與我的問題有什麼關係嗎?在我看來,問題在於消息的大小,但增加配置中的任何選項對我來說都沒有幫助。
我試圖設置在客戶端上,沒有運氣。 使用流式結果切換到請求/響應或刪除所有回調...
任何想法?
1)發佈您的maxReceivedMessageSize和readerQuota 2)有效載荷如何進行?字節數組? – Aliostad 2010-12-07 13:19:17