WCF namedpipe回调超时异常

时间:2011-03-06 04:12:44

标签: wcf exception timeout

我正在使用WCF向在同一台机器上运行的2个不同的win form应用程序发送和获取数据。我正在使用namedpipe和duplexchannel。我的客户端实现如下所示。

InstanceContext myContext = new InstanceContext(this);

NetNamedPipeBinding nb = new NetNamedPipeBinding();
nb.MaxBufferPoolSize = 5000000;
nb.MaxBufferSize = 500000;
nb.MaxReceivedMessageSize = 500000;
nb.ReceiveTimeout = TimeSpan.FromMinutes(5);

DuplexChannelFactory<IService> myProxy = new DuplexChannelFactory<IService>(myContext, nb, new EndPointAddress("net.pipe://localhost/MyService"));

IService myServiceClient = myProxy.CreateChannel();

服务器端实现如下所示:

NetNamedPipeBinding np = new NetNamedPipeBinding();
np.MaxBufferPoolSize = 5000000;
np.MaxBufferSize = 500000;
np.MaxReceivedMessageSize = 500000;

host.AddServiceEndpoint(typeof(IService), np, "net.pipe://localhost/MyService");
host.OpenTimeout = TimeSpan.FromMinutes(5);
host.CloseTimeout = TimeSpan.FromMinutes(5);
host.Open();  

我可以通过回调将1个应用程序中的大约100个对象集合(ObservableCollection<Customer>)传递给其他应用程序。但是如果我将它设为1000或更多对象,则会发生以下超时异常错误。

  

管道写入未完成   在分配的超时内   00:00:00。分配给此的时间   操作可能是一部分   更长的超时。

我的代码有什么问题?请帮我解决这个问题。

提前致谢...

1 个答案:

答案 0 :(得分:1)