1
我想在同一臺計算機(在XP上)兩個進程之間工作一個WCF命名管道通信,但我遇到了「大」消息消失的問題。消失的消息包含一個較大的字節數組,我將失敗範圍縮小到陣列大小約爲16k時。比這更小,並且信息通過。發件人說它比較大,但從未收到過。我試圖撞了在發送者和接收者按照這個代碼在服務器的緩衝區大小:WCF命名管道消息大小問題
PipeServer pipeServer = new PipeServer();
ServiceHost serviceHost = new ServiceHost(pipeServer, new Uri[] { new Uri(baseName) });
NetNamedPipeBinding netNamedPipeBinding = new NetNamedPipeBinding();
netNamedPipeBinding.MaxBufferPoolSize = 5000000;
netNamedPipeBinding.MaxBufferSize = 500000;
netNamedPipeBinding.MaxReceivedMessageSize = 500000;
serviceHost.AddServiceEndpoint(typeof(ISSNPipeServer), netNamedPipeBinding, pipeName);
與此代碼爲客戶端:
_callbacks = new PipeClientCallbacks();
NetNamedPipeBinding netNamedPipeBinding = new NetNamedPipeBinding();
netNamedPipeBinding.MaxBufferPoolSize = 5000000;
netNamedPipeBinding.MaxBufferSize = 500000;
netNamedPipeBinding.MaxReceivedMessageSize = 500000;
_pipeFactory = new DuplexChannelFactory<ISSNPipeServer>(_callbacks,
netNamedPipeBinding,
new EndpointAddress(_targetPipe));
_pipeProxy = _pipeFactory.CreateChannel();
我最終希望轉移陣列中60KB的大小,但這是我第一次認真的WCF體驗,我甚至不知道從哪裏開始尋找。
最大數組長度參數非常可疑,默認值爲16384.但是,請幽默我,並建議我在哪裏改變這一點。出於某種原因,我也在想,在同一個盒子上的命名管道確實通過xml – 2010-09-16 15:34:24
是的... ..修復它。謝謝 – 2010-09-16 15:47:06