2011-03-06 81 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

回答