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在規定的超時時間內完成 。分配給此 操作的時間可能是更長超時的一部分。
我的代碼有什麼問題?請幫我解決這個問題。
在此先感謝...
您可以打開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