2011-03-06 82 views
1

我正在使用WCF发送数据并从两个不同的获胜表单应用程序运行在同一台机器。我正在使用namedpipe和duplexchannel。我的客户端实现如下所示。WCF namedpipe回调超时异常

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

您可以打开WCF客户端和服务器上跟踪,看看正在发生的事情的更多细节on:http://msdn.microsoft.com/en-us/library/ms733025.aspx也取决于你的对象的复杂性,你可以设置'MaxItemsInObjectGraph':http://blogs.msdn.com/b/drnick/archive /2006/11/14/how-to-configure-maxitemsinobjectgraph.aspx – 2011-03-06 09:25:56

回答