Windows サービスによってホストされている WCF サービスがあります。ネットワーク内のゼロから多数のクライアントへのパブリッシュ/サブスクライブ関係があります。バインディングは net.TCP です。WCF サービスは、クライアントがコールバック ハンドラーを登録できるように、"Subscribe" メソッドをクライアントに提供します。WCF サービスは、現在サブスクライブしているクライアントのコールバック ハンドラーでメソッドを定期的に呼び出します。
インターフェースは以下に定義されています (省略形で):
[OperationContract(IsOneWay = false)]
void ReturnInitialData(
InitialData initialData,
CraneState recentState,
VerticalCraneState recentVerticalCraneState,
ThresholdState recentThresholdState,
StationaryStatusFlagsState recentStationaryStatusFlagState,
LightsState recentLights,
BarrierRiskState recentBarrierRiskState
);
サービスが約 42000 バイトのデータで ReturnInitialData() を呼び出すと、正常に動作します。サービスが約 70000 バイトのデータでそれを呼び出すと、次の例外がスローされます。
The socket connection was aborted. This could be caused by an
error processing your message or a receive timeout being
exceeded by the remote host, or an underlying
network resource issue. Local socket timeout was '00:10:00'.
これは netTcpBinding 構成です。
General
CloseTimeout 00:00:20
HostNameComparisonMode StrongWildcard
ListenBacklog 0
MaxBufferPoolSize 524288
MaxBufferSize 2147483647
MaxConnections 0
MaxReceivedMessageSize 2147483647
OpenTimeout 00:01:00
PortSharingEnabled False
ReceiveTimeout 00:10:00
SendTimeout 00:10:00
TransactionFlow False
TransactionProtocol Ole Transactions
TransferMode Buffered
ReaderQuotas Properties
MaxArrayLength 0
MaxBytesPerRead 0
MaxDepth 0
MaxNameTableCharCount 0
MaxStringContentLength 0
ReliableSession Properties
Enabled False
InactivityTimeout 00:10:00
Ordered True
リードやポインタは大歓迎です。