2010-12-07 12 views
1

すべての種類のメッセージを送信するためにWCFを使用し、perticularでこのメッセージは約3200000バイトといくつかの文字列とヘッダーを加えました。大規模なペイロードは、私があらゆる面で模倣しようとしている構成で、別のサービスを介してホストから取得されたシリアライズされたオブジェクトです。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> 

私は、クライアント上でこの非descriptのエラーメッセージが表示されます。

ソケット接続が中断されました。 これは、メッセージの処理中にエラー が発生したか、リモート ホスト、またはネットワーク内で リソースの問題が発生しました。ローカルソケットタイムアウト は'00:00:59.9979996 'でした。

と内側exteption:既存の接続が強制的にトレースを実行しているリモートホスト

により閉鎖された

は、(スタックトレースの最上部)少しより多くの情報をもたらします:

System.ServiceModel.Channels.SocketConnection.Write(Byte [] バッファのInt32はのInt32のサイズ、 ブール即時のTimeSpanタイムアウト)スタックの トップインナーexteptionトレース、オフセット: System.Net.Sockets.Socket.Send(バイト[] バッファのInt32オフセット、のInt32のサイズ、 SocketFlags socketFlagsを

System.Net.Sockets.Socket.Send(バイト[] バッファのInt32オフセット、のInt32のサイズ、 socketFlags socketFlags)

:)スタックの

トップ内部例外をトレース

ペイロードをnullに設定した場合(3.2 MBオブジェクトを送信しない場合)、メッセージは不安なく処理されます。

オブジェクトが別のサービスに由来するという事実は、私の問題に何か関係がありますか?私の目では、問題はメッセージのサイズですが、設定のオプションを増やしてもこれまでのところ助けにはなりませんでした。

私は運がないクライアントで設定しようとしました。 ストリーミング結果を使用してリクエスト/レスポンスに切り替えたり、すべてのコールバックを削除したりする...

アイデアをお持ちですか?

+1

1)あなたのmaxReceivedMessageSizeとreaderQuotaを投稿してください。2)ペイロードはどのように進んでいますか?バイト配列? – Aliostad

+1

1)maxReceivedMessageSizeはどこにありますか?読者のqueotasはすでに掲載されています! 2)ペイロードがバイト[] –

+0

あなたの送信タイムアウトを増やしてみてください。 – DarrellNorton

答えて

0

私は間違っていました!ホスト側の設定レベルで行った変更は、まったく別のサービスで行われました。バッファサイズとメッセージサイズを最大限にすることがトリックでした!私は本当にそれが働かせたものがどれであるか本当にわかりません。MaxBufferSize、MaxReceivedMessageSize、ReaderQuotas-> MaxArrayLength、およびホストとクライアント側の両方のタイムアウト設定を調べるのに似たような問題を持つ皆さんだけお勧めします。また、ホスト側のサービス動作でmaxItemsInObjectGraphを最大化する。

関連する問題