2010-12-07 24 views
1

使用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

1)發佈您的maxReceivedMessageSize和readerQuota 2)有效載荷如何進行?字節數組? – Aliostad 2010-12-07 13:19:17

回答

0

我錯了!我在主機端的配置級別所做的更改是完全不同的服務。最大化緩衝區大小和消息大小的伎倆!我不確定哪一個是它的工作原理。我只能推薦所有有類似問題的人來查看主機和客戶端的MaxBufferSize,MaxReceivedMessageSize,ReaderQuotas-> MaxArrayLength和一些超時設置。還要最大化主機端服務行爲中的maxItemsInObjectGraph。