2009-02-27 40 views
2

我已經編寫了大部分使用WCF的代碼片段,其中客戶端訂閱服務器並且服務器將數據推送到客戶端。在WCF中設置回調的receiveTimeout?

我離開是運行了一段時間,試圖puch一些數據到客戶端,並得到了一個異常,告訴我我必須設置receiveTimeout屬性。

我在哪裏可以設置此屬性?我看到這個問題的地方,它看起來像使用svcutil.exe生成WCF代碼,我沒有這樣做,我真的不想從頭開始。

回答

3

我已經找到了如何做到這一點,當創建管道客戶端,你必須明確地設置綁定超時。

NetNamedPipeBinding binding = new NetNamedPipeBinding(); 
binding.ReceiveTimeout = new TimeSpan(1,0,0); 
binding.SendTimeout = new TimeSpan(1,0,0); 
DuplexChannelFactory<IVdnServer> pipeFactory = new 
    DuplexChannelFactory<IVdnServer>(_subscriber, binding, 
     new EndpointAddress("net.pipe://localhost/PipeService")); 

而當您創建服務端點服務器端時,您還必須明確地設置超時。

NetNamedPipeBinding binding = new NetNamedPipeBinding(); 
binding.ReceiveTimeout = new TimeSpan(1,0,0); 
binding.SendTimeout = new TimeSpan(1,0,0); 

_host.AddServiceEndpoint(typeof(IVdnServer),binding , "PipeReverse");